[PYTHON] Verwenden Sie Github-Flavored-Markdown im Pelican Blog

Ignoriere diesen Artikel, da er alt ist!

Wie von redtree hervorgehoben, habe ich erfahren, dass Pelican jetzt standardmäßig die Codeblocknotation im Github-Stil verwendet.

Bitte ignorieren Sie den Inhalt dieses Artikels! Pelikan ist das Beste!

Einführung

Ich benutze Pelican als Blogging-Tool. Übrigens, als ich ein Kind war, als ich in den Garten ging, war ein Pelikan vor mir. Vor mir, der enttäuscht war, schrie der Pelikan "gar" und flog davon.

Selbst wenn ich den Leuten davon erzählte, war ich enttäuscht, dass niemand es glauben konnte. Mit der Zeit und meine Erinnerung verblasst, "Ist das wirklich ein Pelikan? Ist es nicht ein Fehler auf einem Pelikanflug?" Das denke ich manchmal.

Nun, Pelican-Blogs können mit Markdown-Notation geschrieben werden. Besonders für diejenigen, die viel Quellcode schreiben, als nur Markdown Github-Flavored-Markdown (GFM) ist besser Ich denke, es gibt viele Leute, die daran gewöhnt sind und es leicht finden, zu schreiben.

Leider können Sie GFM normalerweise nicht verwenden.

Python hat eine Bibliothek namens Misaka, die die GFM-Notation verwenden kann. Lassen Sie uns sie also verfügbar machen.

Ändern Sie den Quellcode

Es tut mir leid für diejenigen, die die bedeutungslos lange "Einführung" lesen. Es ist eine verrückte, ziemlich besiegte Lösung. Ich denke, dass es durch Plug-Ins usw. realisiert werden sollte, aber es ist problematisch.

Übrigens versuche ich die von Pelican empfohlene Python-Version mit 2.7. Das Betriebssystem ist Mac OS 10.9.

Installation von Misaka

Mit pip installieren.

$ pip install misaka

Quellenänderung

Das Markdown-Parsing erfolgt in einer Datei namens "reader.py" Ich werde direkt mit dieser Datei herumspielen.

Wenn Sie nicht wissen, wo sich die Datei befindet, verwenden Sie "pip show", um sie zu finden.

(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

Sie finden reader.py im pelican-Verzeichnis des durch den Standort angegebenen Verzeichnisses.

Hier in der 19. Zeile korrigiert

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

↓ So korrigieren

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

Hier um Zeile 215 behoben

    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

↓ So korrigieren

    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) 

Das ist es.

Nun, wie Kobito und Github,

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

Wenn Sie so schreiben und "HTML erstellen", können Sie das erwartete HTML erhalten.

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

Verwenden Sie Github-Flavored-Markdown im Pelican Blog
Blog auf Nikola
Verwenden Sie pyvenv unter Windows
Blog Markdown mit Pelikan
Verwenden Sie Ansible unter Windows
Verwenden Sie QuTiP unter Windows
Verwenden Sie pip unter Windows
Verwenden Sie Gokart, um Pandas-Assoziationen in Ihrer Datenpipeline zu testen.
Verwenden Sie matplotlib unter Ubuntu 12 und Python
Installieren Sie Linux auf Chromebox
Verwenden Sie music21 in Google Colaboratory
Verwenden Sie Github Desktop unter Linux
Installieren Sie numba auf dem Mac
Installieren Sie Django auf dem Mac
Verwenden Sie matplot libwidget auf dem Mac
So installieren Sie Pelican Blog
Verwenden Sie Python unter Windows (PyCharm)
Verwenden Sie NeoPixel mit Himbeerkuchen
Thema zum Pelican Blog hinzugefügt
Verwenden Sie Linux unter Windows 10 (WSL2)
Bloggen mit Pelican unter Windows