Plugin Syntax
KARAS は標準的な構文とは異なる特別な構文を持っています。それらの構文は"プラグイン構文"と呼びます。 プラグイン構文はマークアップのためではない、特別な機能を実行することができます。
プラグイン構文は、そのプラグインが導入されたシステム (KARAS) でなければ使うことができません。 そのシステムが持つ特別な構文です。
Description
プラグイン構文はテキストを [[
と ]]
で閉じます。
プラグイン構文には2つの種類があります。レベル1のプラグイン構文は"コンバート型 (Convert type)" と呼ばれます。
そして、レベル2のプラグイン構文は"アクション型 (Action type)"と呼ばれます。
- Convert type plugin (Level1)
[[ PluginName :: option1 :: option2 … ::: markedupText]]
- Action type plugin (Level2)
[[[ PluginName :: option1 :: option2 … ::: markedupText]]]
プラグイン構文はプラグイン名を1つ目のオプションに必ず指定します。オプションは、::
で区切られます。
指定したプラグイン名によって、処理の内容が変わります。プラグイン名は大文字であるか小文字であるかを考慮しません。
コンバート型のプラグインは、ある本文テキストを装飾したり、変換したりするために使います。
例えば、他のフォーマットで書かれたテキストを変換するために使うことができます。
また、KARAS によってマークアップされたテキストを含めるときは、オプションの最後に :::
を使って指定します。
これより後に記述された :: と ::: どは無視されます。
アクション型のプラグインは、そのテキストの全ての内容を使った結果を得るために使います。
例えば、目次 TOC (Table Of Contents) のために使います。
あるいは、システムに命令を出すために使うことができます。
例えば、コメント欄を挿入したり、ページを非公開にしたりするために使うことができます。
また、コンバート型のプラグインと同様に、オプションに KARAS によってマークアップされたテキストを含めるときは、:::
を使います。
Sample plugin
KARAS の標準のコンバータに含まれるいくつかのプラグインについて解説します。
NowEditiong
NowEditing プラグインは、テキストを出力から削除して、 代わりに、 "Now Editing" のテキストを表示するプラグインです。 レベル1 (Convert type) では、オプションとして指定されたテキストを削除します。 レベル2 (Action type) では、そのページのすべてのテキストを削除します。
[[nowediting :::
sample text 1.
sample text 2.
]]
[[[nowediting]]]
<b> Now Editing. </b>
<p><span style=\"font-size:300%;\"><b> Now Editing. </b></span></p>
Mark
Mark プラグインは、指定したテキストを Mark タグで閉じるプラグインです。 Mark プラグインはレベル1 (Convert type) の構文しか持ちません。 レベル2 (Action type) として実行すると、エラーテキストを返します。 オプションを2つ指定するとき、1つ目のオプションにマークアップする色を指定することができます。
KARAS は Mark 要素を出力するための構文を持っていません。
[[mark ::: markedup text.]]
[[mark :: red ::: markedup text.]]
<mark>markedupText</mark>
<mark style="background-color:red;">markedupText</mark>
TOC (Table Of Contents)
TOC プラグインは、ページに含まれる見出しをリストにして出力するプラグインです。 TOC プラグインはレベル2 (Action type) しか持ちません。 レベル1 (Convert type) として実行すると、実行エラーのテキストが得られます。 オプションを1つ指定するとき、1つ目のオプションにリストにする見出しの最小レベルを指定します。 2 を指定するとき、レベル1の見出しはリストに含まれません。 オプションを2つ指定するとき、リストにする見出しの最大レベルを指定します。 3 を指定するとき、レベル 4, 5, 6 の見出しはリストに含まれません。
= Level1
== Level2
=== Level3 :: idoption
==== Level4
[[[toc]]]
[[[toc::2::3]]]
<h1>Level1</h1>
<h2 id="idoption">Level2</h2>
<h3>Level3</h3>
<h4>Level4</h4>
<ul>
<li>Level1
<ul><li>Level2
<ul><li><a href="#idoption">Level3</a>
<ul><li>Level4</li></ul>
</li></ul>
</li></ul>
</li>
</ul>
<ul>
<li>Level2
<ul><li><a href="#idoption">Level3</a></li></ul>
</li>
</ul>