ezhtでは、各種スタックに値を積むことにより、動作を変化させることができる。
スタックはezhtにおいて一種の変数の役割を果たすが、値を代入するのではなく、値を積むことに特徴がある。
スタックは、必要な時に値を積み上げ、必要なくなればポップしてやることにより、直前の状態を復元できるという点で単なる変数より利便性が高い。
スタックに値を積むには、
@push スタック名 値
とするか、
@push スタック名
値
@end
とする。
後者は、値が複数行を必要とする場合に使用する。
通常は前者を使用するべきである。
関連項目:
本セクションは別ページに記述されています: "スタック一覧"
@pop命令はスタックから現在の値をポップする。
書式は以下の通り
@pop stack [stack [stack [...]]]
この命令は少なくとも1つのスタック名を要求する。
複数のスタックからポップしたい場合には、それぞれのスタック名を複数渡せばよい。
対象となるスタックに値が積まれていない状態(デフォルトの状態)でポップを試みるとエラーが発生する。
関連項目:
@include命令は、指定されたファイルを指定された形式でインクルードする。
書式は以下の通り
@include fname [style]
ここで、fnameはインクルードされるファイル名、第二引数styleは任意でインクルード形式を指定する。
styleの意味は下表の通りである。
インクルード形式 | 挙動 |
---|---|
無指定(デフォルト) | ファイルの内容をそのままインクルードする。 インクルードされた内容は、それがもとからそこにあったかのように処理される。 |
html | ファイルの内容はすべてHTMLで記述された文書の一部であるとしてインクルードする。 行頭の@は@に、行頭の;は;に変換されて取込まれる。 |
text | ファイルの内容をプレーンテキストとして取り込む。 行頭の@は@、行頭の;は;に変換され、HTMLにおける特殊文字はエスケープされ、改行は<br>に置換される |
numbered | 上記text同様ファイルの内容をプレーンテキストとして取り込むことに加え、行頭に行番号を自動的に振る。 行番号は、全体で統一されるよう桁揃いがなされる。(等幅フォントの場合) ソースコードなどを表示させる場合に便利である。 |
関連項目:
インクルードの実例:
例えば、以下のようなファイル(include_source.inc)があったとし、それに対し各種インクルード方法を適用した例を示す。
include_sources.inc の内容:
@begintext
<br>
<table border="1" bgcolor="skyblue">
<tr><td>1</td><td>2</td></tr>
<tr><td>3</td><td>4</td></tr>
</table>
@endtext
@include include_source.inc の結果:
<br>
<table border="1" bgcolor="skyblue">
<tr><td>1</td><td>2</td></tr>
<tr><td>3</td><td>4</td></tr>
</table>
@include include_source.inc html の結果:
@begintext
1 | 2 |
3 | 4 |
@include include_source.inc text の結果:
@begintext
<br>
<table border="1" bgcolor="skyblue">
<tr><td>1</td><td>2</td></tr>
<tr><td>3</td><td>4</td></tr>
</table>
@endtext
@include include_source.inc numbered の結果:
1: @begintext
2: <br>
3: <table border="1" bgcolor="skyblue">
4: <tr><td>1</td><td>2</td></tr>
5: <tr><td>3</td><td>4</td></tr>
6: </table>
7: @endtext
文字の装飾もなく、使われるタグといえば改行の<br>だけという場合は多い。
このような場合、@begintext命令を使うとプレーンテキストを(HTMLに従った形で)そのまま埋め込むことができる。
この命令は以下の書式に従う。
@begintext
プレーンテキスト
@endtext
@endtextで始まる行が現れれば@begintext命令は終了する。
なお、プレーンテキスト中に@で始まる命令があっても、それは命令とは認識されない。同様に、;;で始まる行もコメントとはみなされない。
プレーンテキストは、いくつかの特殊文字(& " < >など)が&などのように変換され、改行は自動的に<br>タグに置換される。
@refer命令は、@mark命令で登録された参照先へのリンクを生成する。
書式は以下の通り
@refer "IDENT" "ANC"
ここで、IDENTは@mark命令で参照先を登録した際の識別子、ANCはアンカーである。
関連項目:
@files命令は、@include命令を拡張したものである。
書式は、下記に従う。
@files MODE DIR PTN [PTN [PTN [PTN...]]]
ここで、MODEは text あるいは numbered の何れかである。
インクルードのモードに付いて詳しくは@include命令を参照していただきたい。
次に、DIRはインクルードされるファイル(群)の基準ディレクトリで、カレントディレクトリからの相対パスあるいは絶対パスとして指定する。
第3引数以降のPTNには、インクルードファイルを好きなだけ指定できる。ここで、PTNには*および?を使ったワイルドカード形式の記述が可能である。
これらの指定されたパターンから全てのマッチするファイル名が検索され、さらにそれらは昇順にソートされ、概念的には次の形式の命令群に置き換わる。
@section 一致したファイル名1 @include MODE DIR/一致したファイル名1 @end @section 一致したファイル名2 @include MODE DIR/一致したファイル名2 @end @section 一致したファイル名3 @include MODE DIR/一致したファイル名3 @end ... |
@jump命令は、@include命令もしくは@files命令によってプレーンテキストもしくは行番号付きプレーンテキストとしてインクルードされたテキストに対し、そのテキストの指定された行へのリンクを生成する。
書式は以下の通り。
@jump FNAME LINE ANC
ここで、FNAMEは対象となるインクルードファイルのファイル名(相対パス)である。
LINEはジャンプ先となる行番号で、先頭行を1とする。
ANCはアンカーである。
例えば、
本ドキュメントのソースファイル(ezht_help.in)の @jump ezht_help.in 500 "500行目へジャンプ" 。 <br> ezhtのソースファイルの一部、gen.ccの @jump ../src/gen.cc 100 "100行目へジャンプ" 。 |
本ドキュメントのソースファイル(ezht_help.in)の500行目へジャンプ。
ezhtのソースファイルの一部、gen.ccの100行目へジャンプ。 |
なお、同一のファイルが複数の個所でインクルードされている場合には、現在のバージョンのezhtでは最後にインクルードされた個所へのリンクを生成する。
関連項目:
@imageコマンドは、(可能であれば)引数として取られた画像ファイルから縦幅と横幅を取得し、imgタグのwidth属性とheight属性を自動的に記述する。
この命令は、以下の書式に従う
@image file [attrs]
ここで、fileは画像ファイル名である。
fileがオープン可能で且つezhtで認識できる画像形式である場合に限り、縦幅と横幅の取得が行われる。認識可能な画像形式は、現在のところ、PNGとGIFと標準(JFIF)のJPEGである。
fileがオープンできない、または認識できない画像形式である場合には、ezhtは警告を発する。
第2引数のattrsは任意である。必要であれば、imgタグの属性群を指定する。例えば、
@image logo.png (border="0" hspace="4" vspace="4")
とすると、@image命令は(logo.pngがサイズ88x31だと仮定して)以下のような記述に置換されることになる。
<img src="logo.png" width="88" height="31" border="0" hspace="4" vspace="4">
本セクションは別ページに記述されています: "@section - セクションの記述"