PukiWiki/1.4

しろくろのへや:inline_pluginから移動しました。 -- ぱんだ

インラインプラグインの実装

行中でプラグインを使用する書式を実装しました。

書式

&コマンド名[(パラメータ)][{ボディ}];
  • コマンド名: 英数字およびアンダーライン(\w+)
  • パラメータ: 括弧(paren)で包む。省略可能。 &name; や &name{body};も可ということ。
  • ボディ: 波括弧(curly brace)で包む。省略可能。 &name; や &name(param);も可ということ。

注意 ユーザ定義を&...;の形式にしている場合
名前が競合しない限り、区別して扱われます。 名前が競合した場合はプラグインが優先します。

プラグイン側

plugin_xxx_inline()という関数を作り、「インライン要素」を返すようにします。

現在、以下のプラグインにインライン関数を追加してあります。

  • color.inc.php
    &color(color){ text };
  • size.inc.php
    &size(size){ text };
  • counter.inc.php
    &counter;
    &counter(param);
    • ページ中で何回呼び出してもかまわないようにしました。
    • インラインで呼び出したときは数値だけを返すようにしてあります。
    • パラメータを追加しました。 today:今日だけ yesterday:昨日 省略またはall:総数
  • online.inc.php
    &online;
  • ref.inc.php
    &ref(hoge.png);
  • version.inc.php
    &version;

サンプル

&size(16){16px &color(red){ 赤 &size(24){ 24px }; }; &color(green){ 緑 }; };

16px 24px

PukiWikiのバージョンは&version;です。

PukiWikiのバージョンはです。

ユーザ定義(&...;)

⌣ &bigsmile; &huh; &oh; &wink; &sad; &heart;

:) :D :p :D ;) ( (heart)

バグ

  • 困ったことに、使い方を誤るとブロック要素を包む<span>を作ってしまいます。
  • パラメータ内にAutoLinkがかかってしまうと、プラグイン処理がうまく動きません。

メモ

  • ユーザー定義を&から始まる文字列で定義しているのですが、併用は可能なんでしょうか? -- reimy 2002-10-25 (金) 16:36:41
    • 大丈夫なはずです。プラグインとして存在しない文字列だった場合はそのままmake_user_rules()にスルーしていますから。 -- ぱんだ 2002-10-25 (金) 16:59:45
  • () と {} の説明で、プラグインに渡る引数の内容(個数)が異なるということですね。 {} だとボディなので1つしか渡ってこない。なのでパラメータとしてなら () でという意味なんですね。-- upk 2003-06-08 (日) 03:51:08
    • &color;や&size;でもわかるように、{ }は通常、本文の一部が入ることが多いことから、{ }の中ではカンマを引数の区切り記号として使えないため、{ }の中は1つの引数として解釈されるはず。( )の中はカンマが引数の区切りになるので、&ref;のように複数の引数が指定できる。 -- reimy 2003-06-08 (日) 04:40:37


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-03-09 (水) 16:25:33
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.268 sec.

OSDN