[PYTHON] Utilisez Github-Flavored-Markdown sur le blog Pelican

Ignorez cet article car il est ancien!

Comme indiqué par redtree, j'ai appris que Pelican utilise désormais la notation de bloc de code de style github par défaut.

Veuillez donc ignorer le contenu de cet article! Pelican est le meilleur!

introduction

J'utilise Pelican comme outil de blog. Au fait, quand j'étais enfant, quand je sortais dans le jardin, il y avait un pélican devant moi. Devant moi, déçu, le pélican a crié "gar" et s'est envolé.

Même si j'en parlais aux gens, j'étais déçu que personne ne puisse y croire. Avec le temps et ma mémoire s'estompe "Est-ce vraiment un pélican? N'est-ce pas une erreur sur un vol de pélican?" Je pense parfois ça.

Eh bien, les blogs Pelican peuvent être écrits en utilisant la notation Markdown, Surtout pour ceux qui écrivent beaucoup de code source, que Markdown simple Github-Flavored-Markdown (GFM) est meilleur Je pense qu'il y a beaucoup de gens qui y sont habitués et qui trouvent cela facile à écrire.

Malheureusement, vous ne pouvez généralement pas utiliser GFM.

Python a une bibliothèque appelée misaka qui peut utiliser la notation GFM, alors rendons-la disponible.

Modifier le code source

Je suis désolé pour ceux qui ont lu la longue "Introduction" sans signification. C'est une solution folle et assez vaincue. Je pense que cela devrait être réalisé par des plug-ins etc., mais c'est gênant.

Au fait, j'essaye la version Python avec 2.7 recommandée par Pelican. Le système d'exploitation est Mac OS 10.9.

installation de misaka

Installez avec pip.

$ pip install misaka

Modification de la source

L'analyse de Markdown est effectuée dans un fichier appelé reader.py, donc Je vais jouer directement avec ce fichier.

Si vous ne savez pas où se trouve le fichier, utilisez pip show pour le trouver.

(pelican)comme@garcons$ pip show pelican                                                                   
---
Name: pelican
Version: 3.3
Location: /Users/comme/.virtualenvs/pelican/lib/python2.7/site-packages
Requires: feedgenerator, jinja2, pygments, docutils, pytz, blinker, unidecode, six

Vous pouvez trouver «reader.py» dans le répertoire «pélican» du répertoire indiqué par emplacement.

Corrigé ici à la 19e ligne

try:
    from markdown import Markdown
except ImportError:
    Markdown = False  # NOQA

↓ Corriger comme ça

try:
    from markdown import Markdown
    import misaka
    import pygments
except ImportError:
    Markdown = False  # NOQA

Fixé ici autour de la ligne 215

    def read(self, source_path):
        """Parse content and metadata of markdown files"""

        self._md = Markdown(extensions=self.extensions)
        with pelican_open(source_path) as text:
            content = self._md.convert(text)

        metadata = self._parse_metadata(self._md.Meta)
        return content, metadata

↓ Corriger comme ça

    def read(self, source_path):
        """Parse content and metadata of markdown files"""

        self._md = Markdown(extensions=self.extensions)
        with pelican_open(source_path) as text:
            content = self._md.convert(text)

        metadata = self._parse_metadata(self._md.Meta)
   
        renderer = self.BleepRenderer()
        misaka_md = misaka.Markdown(renderer,
            extensions=misaka.EXT_FENCED_CODE | misaka.EXT_NO_INTRA_EMPHASIS)
        with pelican_open(source_path) as text:
            misaka_content = misaka_md.render(text)

        return misaka_content, metadata

    class BleepRenderer(misaka.HtmlRenderer, misaka.SmartyPants):
        def block_code(self, text, lang):
            if not lang:
                return '\n<pre><code>%s</code></pre>\n' % escape(text.strip())
            lexer = pygments.lexers.get_lexer_by_name(lang, stripall=True)
            formatter = pygments.formatters.HtmlFormatter()
            return pygments.highlight(text, lexer, formatter) 

C'est tout.

Maintenant, comme kobito et github,

```python
def func():
    print('uuuuuuuuuuwaaaaaaaaaaaaaaaaaaahhhhhhhh')
```

Si vous écrivez comme ceci et «make html», vous pouvez obtenir le html que vous attendiez.

diff

--- a/readers.py
+++ b/readers.py
@@ -18,6 +18,8 @@ except ImportError:
     docutils = False
 try:
     from markdown import Markdown
+    import misaka
+    import pygments
 except ImportError:
     Markdown = False  # NOQA
 try:
@@ -215,7 +217,22 @@ class MarkdownReader(BaseReader):
             content = self._md.convert(text)

         metadata = self._parse_metadata(self._md.Meta)
-        return content, metadata
+
+        renderer = self.BleepRenderer()
+        misaka_md = misaka.Markdown(renderer,
+            extensions=misaka.EXT_FENCED_CODE | misaka.EXT_NO_INTRA_EMPHASIS)
+        with pelican_open(source_path) as text:
+            misaka_content = misaka_md.render(text)
+
+        return misaka_content, metadata
+
+    class BleepRenderer(misaka.HtmlRenderer, misaka.SmartyPants):
+        def block_code(self, text, lang):
+            if not lang:
+                return '\n<pre><code>%s</code></pre>\n' % escape(text.strip())
+            lexer = pygments.lexers.get_lexer_by_name(lang, stripall=True)
+            formatter = pygments.formatters.HtmlFormatter()
+            return pygments.highlight(text, lexer, formatter)


 class HTMLReader(BaseReader):

Recommended Posts

Utilisez Github-Flavored-Markdown sur le blog Pelican
Blog sur Nikola
Utilisez pyvenv sous Windows
Blog Markdown avec Pelican
Utilisez Ansible sur Windows
Utilisez QuTiP sur Windows
Utiliser pip sur Windows
Utilisez gokart pour tester les associations pandas sur votre pipeline de données.
Utilisez matplotlib sur Ubuntu 12 et Python
Installer Linux sur Chromebox
Utilisez music21 sur Google Colaboratory
Utiliser Github Desktop sous Linux
Installez numba sur Mac
Installez Django sur Mac
Utiliser matplot libwidget sur Mac
Comment installer le blog Pelican
Utiliser Python sur Windows (PyCharm)
Utilisez NeoPixel avec la tarte aux framboises
Thème ajouté au blog Pelican
Utiliser Linux sur Windows 10 (WSL2)
Bloguer avec Pelican sur Windows