Pelican Gemini Capsule Plugin
=============================
|GitHub| |License| |Discord| |Github Actions| |Black|
Pelican Gemini Capsule is a Pelican plugin to generate Gemini capsules. Only
works with articles in reStructuredText formats.
**This project is currently work in progress.**
Requirements
------------
* Python >= 3.7
* rst2gemtext_
Installation
------------
::
pip install pelican-gemini-capsule
Usage
-----
Once Pelican Gemini Capsule installed, simply add it to you Pelican configuration:
.. code-block:: python
PLUGINS = [
"pelican_gemini_capsule",
]
Configuration
-------------
You can configure this plugin by adding the following variables to your ``pelicanconf.py``:
.. code-block:: python
# How many articles to display on the home page
GEMINI_DISPLAYED_ARTICLE_COUNT_ON_HOME = 10
# Template of the home page of the Gemlog
GEMINI_TEMPLATE_HOME = """\
# {{ SITENAME }}
## Latest Articles
{% for i in range(articles_count_on_home) %}{% set article = articles[i] %}
=> {{ GEMSITEURL }}/{{ article.url | replace(".html", ".gmi") }} {{ article.date.strftime("%Y-%m-%d") }} {{ article.raw_title -}}
{% endfor %}
{% if articles | length > articles_count_on_home %}
=> {{ GEMSITEURL }}/all_articles.gmi ➕ All Articles
{% endif %}
"""
# Template of the "All Articles" page
GEMINI_TEMPLATE_ARTICLES_INDEX_PAGE = """\
# All Articles — {{ SITENAME }}
{% for article in articles %}
=> {{ GEMSITEURL }}/{{ article.url | replace(".html", ".gmi") }} {{ article.date.strftime("%Y-%m-%d") }} {{ article.raw_title -}}
{% endfor %}
--------------------------------------------------------------------------------
=> {{ GEMSITEURL }}/ 🏠 Home
"""
# Template of articles
GEMINI_TEMPLATE_ARTICLE = """\
# {{ article.raw_title }}
{{ article.date.strftime("%Y-%m-%d") }}
{{ article.content_gemtext }}
--------------------------------------------------------------------------------
=> {{ GEMSITEURL }}/ 🏠 Home
"""
Contributing
------------
Questions
~~~~~~~~~
If you have any question, you can:
* `Open an issue <https://github.com/flozz/pelican-gemini-capsule/issues>`_ on GitHub
* `Ask on Discord <https://discord.gg/P77sWhuSs4>`_ (I am not always available to chat, but I try to answer to everyone)
Bugs
~~~~
Please `open an issue <https://github.com/flozz/pelican-gemini-capsule/issues>`_ on GitHub with as much information as possible if you found a bug:
* Your operating system / Linux distribution (and its version)
* How you installed the software
* All the logs and message outputted by the software
* etc.
If the issue is about the outputted Gemtext (wrong markup, unsupported reStructuredText feature,...), please report the bug to the rst2gemtext_ project.
Pull requests
~~~~~~~~~~~~~
Please consider `filing a bug <https://github.com/flozz/pelican-gemini-capsule/issues>`_ before starting to work on a new feature; it will allow us to discuss the best way to do it. It is obviously unnecessary if you just want to fix a typo or small errors in the code.
Please note that your code must follow the coding style defined by the `pep8 <https://pep8.org>`_ and pass tests. `Black <https://black.readthedocs.io/en/stable>`_ and `Flake8 <https://flake8.pycqa.org/en/latest>`_ are used on this project to enforce the coding style.
Check codding style
~~~~~~~~~~~~~~~~~~~
You must install `Nox <https://nox.thea.codes/>`__ first::
pip3 install nox
Then you can check for lint error::
nox --session lint
You can also fix coding style errors automatically with::
nox -s black_fix
Support this project
--------------------
Want to support this project?
* `☕️ Buy me a coffee <https://www.buymeacoffee.com/flozz>`__
* `💵️ Give me a tip on PayPal <https://www.paypal.me/0xflozz>`__
* `❤️ Sponsor me on GitHub <https://github.com/sponsors/flozz>`__
Changelog
---------
* **[NEXT]** (changes on ``master``, but not released yet):
* Nothing yet :)
* **v0.3.1:**
* Fixed missing code blocks in outputed Gemtext (@flozz)
* **v0.3.0:**
* Resolve internal links (``{filename}../foo/bar.rst``) (@flozz)
* **v0.2.0:**
* Pass the articles source file name to docutils to allow the ``include``
directive to work (@flozz)
* Added a ``raw_title`` attibute on article with decoded HTML entities
(@flozz)
* Create the output folder before trying to write articles (@flozz)
* Avoid having the same image linked twice in articles (@flozz)
* **v0.1.0:**
* Initial release.
* Generates home page
* Generates articles index page
* Generates articles
* Configurable templates
.. _rst2gemtext: https://github.com/flozz/rst2gemtext
.. |GitHub| image:: https://img.shields.io/github/stars/flozz/pelican-gemini-capsule?label=GitHub&logo=github
:target: https://github.com/flozz/pelican-gemini-capsule
.. |License| image:: https://img.shields.io/github/license/flozz/pelican-gemini-capsule
:target: https://github.com/flozz/pelican-gemini-capsule/blob/master/COPYING
.. |Discord| image:: https://img.shields.io/badge/chat-Discord-8c9eff?logo=discord&logoColor=ffffff
:target: https://discord.gg/P77sWhuSs4
.. |Github Actions| image:: https://github.com/flozz/pelican-gemini-capsule/actions/workflows/python-ci.yml/badge.svg
:target: https://github.com/flozz/pelican-gemini-capsule/actions
.. |Black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://black.readthedocs.io/en/stable
Raw data
{
"_id": null,
"home_page": "https://github.com/flozz/pelican-gemini-capsule",
"name": "pelican-gemini-capsule",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "pelican gemini capsule gemtext gmi",
"author": "Fabien LOISON",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/b3/8d/c702ca616cfaf0f977b042df4fd0fdae75a56b7734e8649cdd1eebefee64/pelican-gemini-capsule-0.3.1.tar.gz",
"platform": null,
"description": "Pelican Gemini Capsule Plugin\n=============================\n\n|GitHub| |License| |Discord| |Github Actions| |Black|\n\nPelican Gemini Capsule is a Pelican plugin to generate Gemini capsules. Only\nworks with articles in reStructuredText formats.\n\n**This project is currently work in progress.**\n\n\nRequirements\n------------\n\n* Python >= 3.7\n* rst2gemtext_\n\n\nInstallation\n------------\n\n::\n\n pip install pelican-gemini-capsule\n\n\nUsage\n-----\n\nOnce Pelican Gemini Capsule installed, simply add it to you Pelican configuration:\n\n.. code-block:: python\n\n PLUGINS = [\n \"pelican_gemini_capsule\",\n ]\n\n\nConfiguration\n-------------\n\nYou can configure this plugin by adding the following variables to your ``pelicanconf.py``:\n\n.. code-block:: python\n\n # How many articles to display on the home page\n GEMINI_DISPLAYED_ARTICLE_COUNT_ON_HOME = 10\n\n # Template of the home page of the Gemlog\n GEMINI_TEMPLATE_HOME = \"\"\"\\\n # {{ SITENAME }}\n\n ## Latest Articles\n {% for i in range(articles_count_on_home) %}{% set article = articles[i] %}\n => {{ GEMSITEURL }}/{{ article.url | replace(\".html\", \".gmi\") }} {{ article.date.strftime(\"%Y-%m-%d\") }} {{ article.raw_title -}}\n {% endfor %}\n {% if articles | length > articles_count_on_home %}\n => {{ GEMSITEURL }}/all_articles.gmi \u2795 All Articles\n {% endif %}\n \"\"\"\n\n # Template of the \"All Articles\" page\n GEMINI_TEMPLATE_ARTICLES_INDEX_PAGE = \"\"\"\\\n # All Articles \u2014 {{ SITENAME }}\n {% for article in articles %}\n => {{ GEMSITEURL }}/{{ article.url | replace(\".html\", \".gmi\") }} {{ article.date.strftime(\"%Y-%m-%d\") }} {{ article.raw_title -}}\n {% endfor %}\n\n --------------------------------------------------------------------------------\n => {{ GEMSITEURL }}/ \ud83c\udfe0 Home\n \"\"\"\n\n # Template of articles\n GEMINI_TEMPLATE_ARTICLE = \"\"\"\\\n # {{ article.raw_title }}\n {{ article.date.strftime(\"%Y-%m-%d\") }}\n\n {{ article.content_gemtext }}\n\n --------------------------------------------------------------------------------\n => {{ GEMSITEURL }}/ \ud83c\udfe0 Home\n \"\"\"\n\n\nContributing\n------------\n\nQuestions\n~~~~~~~~~\n\nIf you have any question, you can:\n\n* `Open an issue <https://github.com/flozz/pelican-gemini-capsule/issues>`_ on GitHub\n* `Ask on Discord <https://discord.gg/P77sWhuSs4>`_ (I am not always available to chat, but I try to answer to everyone)\n\n\nBugs\n~~~~\n\nPlease `open an issue <https://github.com/flozz/pelican-gemini-capsule/issues>`_ on GitHub with as much information as possible if you found a bug:\n\n* Your operating system\u00a0/ Linux distribution (and its version)\n* How you installed the software\n* All the logs and message outputted by the software\n* etc.\n\nIf the issue is about the outputted Gemtext (wrong markup, unsupported reStructuredText feature,...), please report the bug to the rst2gemtext_ project.\n\n\nPull requests\n~~~~~~~~~~~~~\n\nPlease consider `filing a bug <https://github.com/flozz/pelican-gemini-capsule/issues>`_ before starting to work on a new feature; it will allow us to discuss the best way to do it. It is obviously unnecessary if you just want to fix a typo or small errors in the code.\n\nPlease note that your code must follow the coding style defined by the `pep8 <https://pep8.org>`_ and pass tests. `Black <https://black.readthedocs.io/en/stable>`_ and `Flake8 <https://flake8.pycqa.org/en/latest>`_ are used on this project to enforce the coding style.\n\n\nCheck codding style\n~~~~~~~~~~~~~~~~~~~\n\nYou must install `Nox <https://nox.thea.codes/>`__ first::\n\n pip3 install nox\n\nThen you can check for lint error::\n\n nox --session lint\n\nYou can also fix coding style errors automatically with::\n\n nox -s black_fix\n\n\nSupport this project\n--------------------\n\nWant to support this project?\n\n* `\u2615\ufe0f Buy me a coffee <https://www.buymeacoffee.com/flozz>`__\n* `\ud83d\udcb5\ufe0f Give me a tip on PayPal <https://www.paypal.me/0xflozz>`__\n* `\u2764\ufe0f Sponsor me on GitHub <https://github.com/sponsors/flozz>`__\n\n\nChangelog\n---------\n\n* **[NEXT]** (changes on ``master``, but not released yet):\n\n * Nothing yet :)\n\n* **v0.3.1:**\n\n * Fixed missing code blocks in outputed Gemtext (@flozz)\n\n* **v0.3.0:**\n\n * Resolve internal links (``{filename}../foo/bar.rst``) (@flozz)\n\n* **v0.2.0:**\n\n * Pass the articles source file name to docutils to allow the ``include``\n directive to work (@flozz)\n * Added a ``raw_title`` attibute on article with decoded HTML entities\n (@flozz)\n * Create the output folder before trying to write articles (@flozz)\n * Avoid having the same image linked twice in articles (@flozz)\n\n* **v0.1.0:**\n\n * Initial release.\n * Generates home page\n * Generates articles index page\n * Generates articles\n * Configurable templates\n\n\n.. _rst2gemtext: https://github.com/flozz/rst2gemtext\n\n.. |GitHub| image:: https://img.shields.io/github/stars/flozz/pelican-gemini-capsule?label=GitHub&logo=github\n :target: https://github.com/flozz/pelican-gemini-capsule\n\n.. |License| image:: https://img.shields.io/github/license/flozz/pelican-gemini-capsule\n :target: https://github.com/flozz/pelican-gemini-capsule/blob/master/COPYING\n\n.. |Discord| image:: https://img.shields.io/badge/chat-Discord-8c9eff?logo=discord&logoColor=ffffff\n :target: https://discord.gg/P77sWhuSs4\n\n.. |Github Actions| image:: https://github.com/flozz/pelican-gemini-capsule/actions/workflows/python-ci.yml/badge.svg\n :target: https://github.com/flozz/pelican-gemini-capsule/actions\n\n.. |Black| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://black.readthedocs.io/en/stable\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "Pelican plugin to generate Gemini capsules",
"version": "0.3.1",
"split_keywords": [
"pelican",
"gemini",
"capsule",
"gemtext",
"gmi"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c80330ad1da8257216e0a2cb0ff35fc60f62ee04d909c7f0b0c5f99087fdde93",
"md5": "df61493591deec1fdbffe5343e024f47",
"sha256": "f61a51ab6fd25a10a7af7554ead0f01d81721939d0d0d88bb50c27aa54c9a6e8"
},
"downloads": -1,
"filename": "pelican_gemini_capsule-0.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "df61493591deec1fdbffe5343e024f47",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 17795,
"upload_time": "2023-03-20T18:13:02",
"upload_time_iso_8601": "2023-03-20T18:13:02.601522Z",
"url": "https://files.pythonhosted.org/packages/c8/03/30ad1da8257216e0a2cb0ff35fc60f62ee04d909c7f0b0c5f99087fdde93/pelican_gemini_capsule-0.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b38dc702ca616cfaf0f977b042df4fd0fdae75a56b7734e8649cdd1eebefee64",
"md5": "9d56280ac58d1fda022c17a2e3c3a215",
"sha256": "3a9fffeef98f67298e7adf219dcf5233d133f49b6b7a63b7249510f565afc336"
},
"downloads": -1,
"filename": "pelican-gemini-capsule-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "9d56280ac58d1fda022c17a2e3c3a215",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17418,
"upload_time": "2023-03-20T18:13:04",
"upload_time_iso_8601": "2023-03-20T18:13:04.196979Z",
"url": "https://files.pythonhosted.org/packages/b3/8d/c702ca616cfaf0f977b042df4fd0fdae75a56b7734e8649cdd1eebefee64/pelican-gemini-capsule-0.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-20 18:13:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "flozz",
"github_project": "pelican-gemini-capsule",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pelican-gemini-capsule"
}