Plan 9

wf

SYNOPSIS

wf [-dp] [-l lang] [-x x1 x2] [file]

DESCRIPTION

wikiのような記述から、HTMLを生成します。 使用できる文字は以下の通り。

= item
hN
+ item
ol
* item
ul
: item
dt
- item
dd
> item
blockquote
! string
pre
\ item
p
| item item ...
table

上記以外であればpになります。 また、itemでは、以下の文字が使えます。

* item *
strong
[ url ]
[ item | url ]
a
< url >
< item | url >
img

これらをただの文字として扱う場合は、**のように2つ続けて書きます。

urlについては、acmeで使いやすくするために、 変なプリフィックスルールがあります。 オプションで

wf -x w html

とすると、urlの末尾が.wであれば.htmlに書き換えて出力します。 これは複数あってもかまわないので、

wf -x w html -x pic png

のようにできます。

テーブル

テーブルは、タブで区切ったセルをtdとして生成します。 タブは1つ以上であってもまとめて扱うので、 表が見やすいように整形してもかまいません。 また、thを使いたい場合は、セル全体を*(strong)でくくってください。 例えば以下の場合、1行目はすべてthセルになります。

|*name*		*value*
|maxht		20
|width		70

ヘッダ

ヘッダは、%で開始します。 これはファイルの先頭にのみ可能です。

% name string

nameは、title, tag, script, style, feed, urlが組み込まれており、 title, styleなど、必要な要素を生成します。 上記以外の名前は<meta name="$name" content="$string">と なります。

同じ名前が複数回あらわれた場合、 それらは連結して1つの要素となります。

このうち、urlは特殊な扱いになっていて、 これだけではHTMLを生成することはありませんが、 [ url ]タイプのリンクについて、 正規表現置換を行いURLを設定します。 たとえばurlを使い、簡易な表記でPlan 9マニュアルに リンクを張る場合は以下のように書きます。

%url s|^([a-z0-9]+)\(([1-9])\)$|/magic/man2html/\2/\1|
*[man(1)]
*[regexp(2)]
*[fsconfig(4)|http://www.domain.dom]

この3つ目のリンクは、正規表現置換を行いません。 また、xオプションのルールで変換したものに対して適用します。

urlが複数現れた場合、書かれた順に評価していき、 マッチするものがあればそこで終了します。

ブロック化

同じ行頭文字が続いた場合は、 以前の行とまとめて1つのブロック(block)となります。 途中で区切りたい場合は、空行を置いてください。

ブロックも、同じレベルに属するブロックをまとめようとします。 セクションの項も参照。

また、明示的にブロックを作成する場合は、 以下の方法があります。

{
	blocks
}

これは、blocksをdivで囲みます。 {}の中ではインデントが1つ増えますが、 新しいセクションが開始されるわけではありません。 セクションも含む場合は2つ以上インデントしてください。

IDとクラス

ブロックの前に、置くことができます。 続くブロックを生成するときに、必要な属性を追加します。

. name
class
# name
id

classは、複数並べることが可能です。

.name1
.name2
aaa
bbb

その場合、class="name1 name2"のようになります。

クラスの要素化

特別なルールとして、class="nav"をもつブロックは、 親セクションのnav要素として書き出します。 要素化されたクラス属性は取り除かれます。

navの他に、header, footer, asideもあります。 特別なクラスが同時に設定された場合、 優先順位は高い順にnav, header, footer, asideです。

セクション

インデントすれば、その部分をsectionで囲みます。 もちろんhNは、sectionに追従して、h1, h2 ...と増加します。

block
	blocks2

EXAMPLE

%title Plan 9
%url s|^([a-z0-9]+)\(([1-9])\)$|http://plan9.bell-labs.com/magic/man2html/\2/\1|
%url s|^(contrib/[^ 	]+)$|http://plan9.bell-labs.com/sources/\1|
%title html5 generator

=wf

	=SYNOPSIS
	!wf [-dp] [-l lang] [-x x1 x2] [file]

	=DESCRIPTION

	wikiのような記述から、HTMLを生成します。
	使用できる文字は以下の通り。

	:= item
	-hN
	:+ item
	-ol
	:** item
	-ul

BUGS

クラスやIDは、セクションや=(Hn)には適用できません。 明示的に{}を書いてください。