Piki -- コマンドライン WIKI
山本和彦
作成:2010.3.10
更新:2011.3.15
"piki" は、テキストファイルを HTML ファイルに変換するためのコマンドライン・プログラムです。"piki" は文章の構造を表現するための簡潔な記法を提供します。
"piki" は、Haskell の関数型パーサーである Parsec で書かれており、HackageDB で公開しています。Git リポジトリーは、github にあります。
"piki" コマンド
"piki" は、HTML 雛形ファイル("template.html"とする) と Piki 記法で書かれたファイル("index.piki"とする)をコマンドライン引数に取り、HTML ファイル("index.html" とする)を出力します。
% piki template.html index.piki > index.html
"template.html" には HTML のメタ情報を記述します。"piki" は、Piki ファイル中の "$body" を Piki ファイルから生成したコンテンツで置き換えます。また、"$title" を 最初の <h1> の値で置き換えます。
template.html の例は、ブラウザーの「ソースを見る」で表示できるでしょう。index.piki の例も表示してみて下さい。
Piki ファイルは、UTF-8 で書いて下さい。
Piki 記法
他の WIKI システムと同様に、多くの Piki 記法は行頭の文字を利用します。
コメント
"#' で始まる行は無視されます。
# コメント。無視される。
罫線
"=" で始まる行は、罫線(<hr />)になります。"=" 以降の文字は無視されます。
================================================================
見出し
<h?> タグは "*" で表現します。"*" の数は、見出しのレベルを表します。
* レベル1の見出し (h1) ** レベル2の見出し (h2)
Lists
"-" と "+" は、それぞれ番号なしリスト(<ul>)と番号付きリスト(<ol>)を表します。両方を同時に再帰的に利用できます。
- レベル 1 ++ 番号付きのレベル 2 ++ 番号付きのレベル 2 - レベル 1 ++ 番号付きのレベル 2 ++ 番号付きのレベル 2 +++ 番号付きのレベル 3 +++ 番号付きのレベル 3 - レベル 1
定義リスト
"?" と "!" は、それぞれ定義リスト(<d>)のタイトル(<dt>)と説明(<dd>)を表します。この記法は再帰的に利用できません。
? タイトル 1 ! 説明 1 ? タイトル 2 ! 説明 2
画像
"@" は画像(<img />)を意味します。"@" には、タイトルと URL の組が続きます。それらは、空白で区切ります。タイトルが空白を含む場合は、ダブルクオートで囲む必要があります。
@ "Image of flowers" http://example.com/img/flower.jpg @ 僕の猫 cats.jpg 私の犬 dogs.jpg
クリックできる画像
"@@" はクリックできる画像(<img />)を意味します。"@" には、タイトル、画像のURL、参照URL の三組が続きます。それらは、空白で区切ります。タイトルが空白を含む場合は、ダブルクオートで囲む必要があります。
@@ English /image/english.png /en @@ Japanese /image/japanese.png /ja
整形済みテキスト
整形済みテキスト(<pre>)は、">|" と "|<" で囲みます。
>| (define (fib n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2)))))) |<
区域
"{" と "}" で囲まれた行は、区域(<div>)になります。"{" の後に大文字が含まれていると、それは "id" の値になります。それ以外は、"class" の値になります。
{center なんらかの Piki テキスト }
CSS と一緒に利用すると便利です。
.center { margin: 0px auto; text-align: center; }
段落
Piki 記法で始まらない行は、段落(<p>)になります。段落の区切りは、空行です。
第一段落:日本語では、一行に書く方がいいでしょう。 第二段落:English can be spread into multiple lines.
リンク
リンクを張るには、"[title url]" という記法を用います。タイトルが空白を含む場合は、ダブルクオートで囲む必要があります。もちろん、この記法は行頭でなくとも使えます。
僕の好きなコンピュータ言語は [Haskell http://www.haskell.org/] です。
表
表は、各要素を "|" で区切って記述します。
|システム|種類| |[Hugs http://www.haskell.org/hugs/]|インタープリター| |[GHC http://www.haskell.org/ghc/]|コンパイラー\|インタープリター|
回避文字
回避文字は '\' です。"[]" と表示するには "\[\]" と書きましょう。
通常、HTML の特殊文字は、参照文字列に変換されます。たとえば、'<' は "<" に変換されます。
もし、特殊文字が回避されたら、参照文字列には変換されません。以下に興味深い例を示します。
{right 山本和彦\<br /\> 2009.4.6 }
.right { text-align: right; padding-right: 16px; }