Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert

Erste Qiita ... alle ...

Ich werde über das Erstellen einer Webanwendung namens Markdown-> HTML-Konvertierung ** Markdown-Server ** sprechen. Quellcode: https://github.com/ohbarye/markdown-server

What is markdown-server? Es ist eine einfache Webanwendung, die einfach eine Markdown-Datei in HTML konvertiert und im Text- / HTML-Format antwortet. Die Standard-Markdown-Engine ist Markdown mit Github-Geschmack.

Motivation

Ich schreibe persönliche Memos wie Verfahrenshandbücher und TODO in der Firma in Markdown (Ergänzung: Es ist eine Geschichte des Arbeitsplatzes, an dem ich bis 2015 gearbeitet habe), aber da es eine Firma ist, die Excel liebt, wenn es darum geht, es anderen zu zeigen, "Markdown" "Was?" Also fragte ich mich, ob es eine gute Möglichkeit gibt, es zu zeigen oder an Leute zu verteilen, die keinen Markdown-Editor haben.

Wie man / sich vorerst bewegt

Sie benötigen eine Python-Ausführungsumgebung. Die Entwicklungs- / Betriebsprüfung erfolgt in 2.7.9. Es ist nicht erforderlich, aber es ist schnell, wenn Sie "Git-Klon" können.

Der Server startet nur mit dem folgenden Befehl.

$ git clone https://github.com/ohbarye/markdown-server
$ cd markdown-server
$ pip install -r packages_requirements.txt
$ python start_server.py

Greifen Sie beim Starten des Servers auf die folgende Adresse zu und überprüfen Sie das Konvertierungsergebnis der Markdown-Beispieldatei.

$ open http://localhost:8009/sample.md

Beispiel

Eine Markdown-Datei wie diese

# Konvertieren Sie Markdown mit Python in HTML

 Konvertieren Sie in HTML mit Markdown mit Github-Geschmack.

## Bibliothek verwendet

 |No.|Name|Description|
 |:-|:-|:-|
 |1|markdown|Markdown ->HTML-Konvertierungsbibliothek|
 |2|pygments|Für Syntax-Highlights|
 |3|bottle|Webanwendungs-Framework|

## Highlights der Codesyntax

\```python
import markdown as md

class MarkdownConverter(object):

    def convert(self,file_name):
        code = md.markdown(self.read_md(file_name), extensions=['gfm'])
        return self.write_html(file_name,code)

    def read_md(self,file_name):
        md_file = codecs.open(markdown_root + file_name,encoding=ms_encoding,mode='r')
        return md_file.read()

\```

Es wird so gezeichnet.

http:localhost/8009/sample.md

Funktionen / Erweiterungsmethode

env.py


ms_port        = '8009'
ms_host        = 'localhost'

env.py


css_name       = 'github.css'
markdown_type  = 'gfm'

Über die verwendete Technologie

Abhängige Bibliotheken

Dies hängt hauptsächlich von den folgenden Bibliotheken ab. Informationen zur gesamten Sammlung, einschließlich der Bibliotheken, von denen sie abhängen, finden Sie im GitHub-Repository (https://github.com/ohbarye/markdown-server/blob/master/packages_requirements.txt).

No. Name Description
1 markdown Markdown ->HTML-Konvertierungsbibliothek
2 pygments Für Syntax-Highlights
3 bottle Webanwendungs-Framework

markdown

Markdown-Konvertierungsbibliothek. Die meisten Funktionen dieses Servers sind die Funktionen dieses Servers. https://pypi.python.org/pypi/Markdown Qiita stellt in diesem Artikel auch die Verwendung vor. http://qiita.com/kimihiro_n/items/982c6fc0b3c7cf226799

Grundsätzlich können Sie damit konvertieren.

import markdown as md
md.markdown("# markdown text")

Wenn Sie das Markup-Format ändern möchten, geben Sie "Erweiterungen" an. Unten finden Sie ein Beispiel für Github Flavored Markdown.

import markdown as md
md.markdown("# markdown text", extensions=['gfm'])

Der obige Code allein lässt sich jedoch mit GFM nicht gut konvertieren. Ich war zu dieser Zeit besonders süchtig, aber es wird gesagt, dass sich das Verhalten der Markdown-Konvertierung ändert, je nachdem, ob die unten beschriebenen Pynements installiert sind oder nicht. (Ernsthaft)

pygments

Python-Syntax-Textmarker. http://pygments.org/ https://showa-yojyo.github.io/note/python-pygments.html

Die Beziehung zwischen der Bewegung von Abschriften und Abgaben wurde im folgenden Artikel zusammengefasst.

Die Syntax-Highlights funktionieren nicht. Als ich jedoch Markdown + py-gfm in MoinMoin in meinen letzten Eintrag aufgenommen habe, hatte es Syntax-Highlights. Warum?

Ich war neugierig und habe verschiedene Quellen gelesen, aber die Antwort ist, dass MoinMoin von Pygumenten abhängt. Die Markdown-Bibliothek verhält sich vor und nach der Installation von Pylements unterschiedlich. http://tototoshi.hatenablog.com/entry/2014/05/17/020241

Wie Sie der Quelle entnehmen können, habe ich diesmal nirgendwo "Pygamente importiert". Ich habe es gerade nur für GFM installiert.

bottle

Webanwendungs-Framework-Bibliothek. http://bottlepy.org/docs/dev/index.html

In Bezug auf Pythons Webanwendung FW wusste ich nur über ** Django ** Bescheid, aber es gibt viele andere.

Dieses Mal habe ich ** Flasche ** mit der höchsten Priorität auf "Leichtigkeit" gewählt. Der folgende Code wird vom Beamten so wie er ist abgerufen, aber es ist ein enorm leichtes Gefühl, dass Sie Hello World in 5 Zeilen ausführen können.

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

Dieses Mal verwende ich nicht einmal die Vorlagenfunktion, da ich nur auf das konvertierte HTML antworte. Die Methode zum Antworten auf statische Dateien lautet "static_file".

start_server.py


return static_file(html_file_name, root=ms_root)

Impressionen-> Python ist gut

Normalerweise verwende ich Java als Hauptsprache und schreibe selten Skriptsprachen, daher war es erfrischend. Paketverwaltung mit ** pip ** / Entwicklungsumgebungsverwaltung mit ** pyenv ** / Entwicklung ohne IDE (diesmal ** Atom **).

In meiner Python-Geschichte geht es übrigens um ** Codecademy **, an dem ich alle Python-Kurse in einer Woche teilgenommen habe. Ich dachte, es sei eine gute Sprache ohne Macken, leicht zu schreiben und ohne seltsame Sucht nach einfachen Skripten.

Ich hoffe, dass auch die Anzahl der Markdown-Benutzer im Unternehmen zunimmt.

Recommended Posts

Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Schritte zum Entwickeln einer Webanwendung in Python
Ich habe ein Pay-Management-Programm in Python erstellt!
In Python von Markdown in HTML konvertieren
Ich habe eine WEB-Bewerbung bei Django gemacht
Ich habe ein Skript geschrieben, um Webseiten-Links in Python zu extrahieren
Erstellt einen Toolsver, der Betriebssystem, Python, Module und Toolversionen an Markdown ausspuckt
Ich habe ein Plugin erstellt, um mit Vim eine Markdown-Tabelle aus CSV zu generieren
Ein Memo, das ich schnell in Python geschrieben habe
[Python] Ich habe einen Dekorateur gemacht, der keinen Nutzen zu haben scheint.
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Ich möchte mit Python ein Fenster erstellen
Ich habe in Python einen Discord-Bot erstellt, der übersetzt, wenn er reagiert
Ich habe einen verstümmelten Generator erstellt, der Ihre Lieblingssätze von UTF-8 bis Shift-JIS (cp932) in Python codiert
Ich habe versucht, einen Formatierer zu entwickeln, der Python-Protokolle in JSON ausgibt
Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
[IOS] Ich habe ein Widget erstellt, das den Trend von Qiita in Pythonista3 anzeigt. [Python]
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Wovon ich beim Erstellen von Webanwendungen in einer Windows-Umgebung abhängig war
Ich habe einen Zeilenbot erstellt, der Python verwendet, um ungelesene E-Mails aus Google Mail abzurufen!
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Ich möchte eine WEB-Anwendung mit den Daten von League of Legends ① erstellen
Ich habe ein Modul in C-Sprache erstellt, das von Python geladene Bilder filtert
Ich suchte nach den Fähigkeiten, die erforderlich sind, um Webingenieur bei Python zu werden
In Python habe ich einen LINE-Bot erstellt, der Polleninformationen aus Standortinformationen sendet.
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
Ich möchte Timeout einfach in Python implementieren
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Ich habe eine VM erstellt, auf der OpenCV für Python ausgeführt wird
Ich habe ein Skript erstellt, um ein Snippet in README.md einzufügen
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ich habe ein Python-Modul erstellt, um Kommentare zu übersetzen
Ich möchte eine Datei mit Python zufällig testen
Ich möchte mit einem Roboter in Python arbeiten.
[Python] Eine praktische Bibliothek, die Kanji in Hiragana konvertiert
Ich habe einen Befehl zum Markieren des Tabellenclips gegeben
Ich habe eine Python-Bibliothek erstellt, die einen rollierenden Rang hat
Ich habe einen Python-Text gemacht
[Python + Flasche] Ich habe einen Webdienst veröffentlicht, der die positionierten Tweets von Twitter visualisiert.
Erstellt eine Web-App, die IT-Ereignisinformationen mit Vue und Flask abbildet
Ich kann nicht schlafen, bis ich einen Server erstellt habe !! (Einführung in den Python-Server an einem Tag)
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich habe einen schnellen Feed-Reader mit Feedparser in Python erstellt
Ich habe eine einfache Buch-App mit Python + Flask ~ Introduction ~ erstellt
Ich habe einen Befehl zum Generieren eines Kommentars für eine Tabelle in Django eingegeben
Ich habe versucht, "ein Programm, das doppelte Anweisungen in Python entfernt"
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht