ToDo/機能呼び出しで複数行パラメーターを書くには †
ただ改行を含めて書く †
plugin(l1 l2,p2)
分かりにくい。
置き換え †
plugin(l1
l2,p2)
WikiCreole式。
これなら特別な工夫が要らない。
パラメーター取得後に
を置き換えるだけ。
ブロックにする †
**plugin -l1 l2 -p2
記法を利用して。
複数行向けの機能記法を用意するようなもの。
ページ全体 †
(ページ属性に「ページ全体をpluginに渡す値」を指定)
段落など、ページに書けるものは全て渡せる。
ページ属性に機能名を書く。
plugin({{ページ}})
ページを作って埋め込み。
長いパラメーターなら使い回す価値があるはず。
答え †
→複数行を機能に渡すには、置き換えと:i/埋め込み式ページが良さそう。
必要な処理 †
plugin(l1
l2,p2) plugin({{ページ}})
記法解釈・HTML変換後、自動リンク前のパラメーターを機能に渡す。機能実行の結果も自動リンクの対象になる。
埋め込み解決は記法解析前に行なう。これも自動リンク。自動リンクでは、リンク先が埋め込み式ページなら埋め込みになる。
相対パスの解決は書かれているページ次第で変わるため、埋め込みを解決してからにしたいがそれがまた別の相対パスと埋め込みを含んでいるので、相対パスと埋め込みを交互に解決していくことになる。
埋め込みと自動リンクは同じ処理なのにトリガーが同じなのにタイミングが異なる?
→機能出力は機能がフレームワークを利用してパラメーターを解析、パラメーターに別の記法が含まれていたとしてもフレームワークを利用してHTML変換してからフレームワークに返す。自動リンク処理をするかどうかは機能次第。
埋め込みは展開して機能に渡したいが記法に別の記法が含まれていると埋め込みだけをまとめて解決するのは無理。
自動リンクの結果はHTML、埋め込みの結果はWikiText。異なるのが問題。これをどちらもWikiTextにする?つまり自動リンクの結果を相対パス→絶対パスのWikiTextに。
機能に相対パスを渡せなくなる。
→自動リンクも埋め込みの解決も機能側がフレームワークを呼び出して任意のタイミングで処理。
答え †
複数行を機能に渡すには、置き換えと埋め込みで。
plugin(l1
l2,p2) plugin({{ページ}})
記法(機能)の処理中にフレームワークを利用して自動リンクと自動リンクに伴う埋め込み(と明示的な埋め込みも)を行なう。
機能には書かれている通りのWikiTextが渡される。それを埋め込みとして解釈、展開するのは機能次第。
機能はHTMLを出力する。そのままレスポンスの一部になる。