Python-Markdown
初回公開:2018/01/01
最終更新:2018/01/13
「Python Markdown」をつたない翻訳,勝手な解釈。
【 目次 】
これはJohn GruberのMarkdownのPythonによる実装です。
いくつかの小さな違いがありますが、リファレンス実装にほぼ完全に準拠しています。
構文規則については、JohnのSyntax Documentationを参照してください 。
開始するには、インストール手順を参照してください。
ゴール
Python-Markdownプロジェクトは、次の目標を念頭に置いて開発されました。:
-
構文規則に従うmarkdownパーサーの実装、そして可能な限り合理的に元の(markdown.pl)実装の動作(いくつかの例外については相違点を参照)として、Webサーバー環境で使用するのに適した(例外を発生させない、stdoutに書き込まないなどの)、Python 2およびPython 3ライブラリ(オプションのCLIラッパーとともに)を確保する。。
-
パーサーの動作を変更および/または拡張することを可能にするExtension APIを提供する。
訳者による蛇足
CLI
CLIラッパーというのは
- CLI - Wikipedia
- 用語解説辞典|【公式】NTTPC
CLI には、2つの意味がある。Command Line Interface(コマンド・ライン・インターフェース)と Common Language Interface(コモン・ランゲージ・インターフェース)だ。
CLIという略記(頭文字を繋げたアルファベットを1つの単語として発音する略語)にはいろいろな意味が当てはまるが、ここでの意味はCommand Line InterfaceすなわちCUIの事を指しているとおもわれる。
Python-Markdownはpythonのコードを書かなくても、コマンドラインから直接markdownテキストをhtmlに変換できるという事を言っているのであろう。
Python-Markdownのコマンドラインからの使い方については
コマンドラインツール
本題にそれるが、pythonにはコマンドラインツールといのがいろいろとあって
Python Fire
- Pythonコードからコマンドラインインターフェイスを自動生成するツール『Python Fire』を試してみた | Developers.IO
- Python Fire とはどんなものなのか - hiyosi's blog
markdown.pl
- Markdown - Wikipedia
Markdownはグルーバーによって書かれたMarkdown.plというPerlプログラムを指すこともある。このスクリプトは、Markdownの形式でマークアップされたテキストをXHTML文書もしくはHTML文書に変換するものである。Markdown.plはスクリプト単体として利用することができると同時に、BlosxomやMovable Typeのプラグインなどからも利用できる[1]。 Markdown.plは、その後第三者によってCPANのPerlモジュール (Text::Markdown) として再実装され、さらにPython等の他のプログラミング言語でも実装された。MarkdownはBSDライセンスの下で配布され、いくつかのコンテンツ管理システム (CMS) でもプラグインとして利用できる[2][3]。 ... 有名なMarkdown方言としてMarkdown Extra(英語版)[1]やGitHub Flavored Markdown(英語版)[2]、Marukuなどがある。その他のサービス・コンバータにおいても表やソースコードの記法などで独自の拡張が加えられていることが多い。
- Markdown書式(オリジナルMarkdown.pl) · GitHub
- Markdownとは · 日本語Markdownユーザー会
Markdownはジョン・グルーバー(John Gruber)によって2004年に開発され、最初は Daring Fireball: Markdown で公開されました。その後、多くの開発者の手を経ながら発展してきました。
markdownはジョン・グルーバーによって開発され、Markdownからhtmlへの変換プログラムはグルーバーによって書かれたmarkdown.plがバイブル的なものになっているようだ。
また、Markdown記法を拡張したものとして有名なものにMarkdown ExtraやGitHub Flavored Markdownがあるという事。
ジョン・グルーバーJ(ohn Gruber)
AppleウォッチャーのJohn Gruberって同姓同名の別人だろうか?(蛇足のそのまた蛇足)
機能
基本的なマークダウン構文に加えて、Python-Markdownは次の機能をサポートしています。
-
多言語対応(International Input)
Python-Markdownは、双方向テキストを含むUnicodeでサポートされている言語で入力を受け付けます。
実際、テストスイートにはロシア語とアラビア語で書かれた文書が含まれています。 -
拡張機能Extensions
基本構文を変更および/または拡張するために、さまざまなExtensions(Extraなものを含む)が用意されています。
また、独自のExtensionsを作成するための公開されているExtensions APIも用意されています。 -
出力フォーマット
Python-MarkdownはHTML4、XHTML、HTML5でドキュメントを出力できます。
詳細については、ライブラリリファレンスを参照してください。 -
コマンドラインインターフェイス
Pythonライブラリであることに加えて 、便利なコマンドラインスクリプトも用意されています。
相違点
Python-Markdownは構文規則で説明されているようにMarkdownを完全に実装しようとしていますが、ルールはさまざまな方法で解釈され、異なる実装では動作が異なることがあります(例についてはBabelmark FAQを参照してください)。 Python-Markdownの既知のそして意図的な相違点を以下にまとめます。
-
Middle-Word Emphasis
Python-Markdownは、デフォルトではMiddle-Word Emphasis(単語の中に含まれている強調記号)を無視します。言い換えれば、 some_long_filename.txtはsomelongfilename.txtになりません。 これは必要に応じてオフにすることができます。 詳細については、ライブラリリファレンスを参照してください。
-
インデント/タブの長さ
構文規則は明らかにリスト項目が複数の段落から構成されている場合、"リスト項目の後続の各段落は、4つのスペースまたは1つのタブのいずれかでインデントされなければなりません"(John GruberのMarkdownの原文からの引用して、「なければなりません」の部分に強調が加えている)。 しかし、多くの実装ではこの規則が適用されておらず、インデントのスペースが4つ以下に制限されています。 Python-Markdownの実装者は、この規則を適用しないとバグだと考えます。
これは、段落、サブクラス、ブロッククォート、コードブロックなど、リストにネストされたブロックレベルの要素に適用されます。 ネストレベルごとに少なくとも4つのスペース(または1つのタブ)でインデントする必要があります。
異なる動作を好む場合は、tab_lengthを任意の長さに設定できます。 ただし、これは構文のすべての側面(ルートレベルのコードブロックを含む)のインデントに影響するため、注意してください。
-
連続したリスト
構文規則はこの点では明確ではありませんが、リストマーカー(アスタリスク、プラス、ハイフン、および数字)が変更されると、多くの実装(オリジナルを含む)が1つのリストを終了せず、2番目のリストを開始しません。 一貫性を保つため、Python-Markdownは近い将来に変更する予定がなく、同じ動作を維持します。 つまり、Sane List Extension は、それほど驚くべき動作を提供することはできません。