ヘルプ:チュートリアル/高度なコード
導入 | ホーム | 編集・作成 | ソース早見表 | 高度なコード | 管理者の力 | プロジェクト | 導出 |
このページでは、ソース早見表で紹介したものとは別の、さらに高度なコードについて紹介します。
TemplateStyles
TemplateStylesは、テンプレートページにCSSを読み込むことができる拡張機能です。手順は以下の通りです。
- テンプレートページに、.css で終わるサブページを作る。(例: テンプレート:テスト/style.css)
- そのサブページにCSSを書きまくる。
- テンプレートページに
<templatestyles src="テンプレート名/サブページ名" />
と入力してCSSページを呼び出す。(例:<templatestyles src="テスト/style.css" />
) - テンプレートにCSSが反映され、常習者は歓喜する。
パーサ関数
パーサ関数は、条件分岐を扱うことのできる特殊な文字列です。一般に、形式は
{{#関数名: 引数1 | 引数2 | 引数3...}}
となっています。「関数名」のところにはexpr
, if
, ifeq
, ifexist
, ifexpr
, switch
, time
, timel
, rel2abs
, titleparts
, iferror
のいずれかが入り、「引数n」のところには任意の数値や文字列が入ります。関数がこれらの数値や文字列を処理することで、{{
-}}
の部分が何らかの値に変わります。
さて、ここでは、よく用いられる関数 expr
, if
, ifeq
, ifexpr
, switch
の機能を一つひとつ見ていきましょう。
expr
expr関数は、引数を数式として評価し、その計算結果を返します。さまざまな演算子が使用できます。
{{#expr: 3 * ( 2 + 7 ) }}
:27{{#expr: 17 mod 4}}
:1{{#expr: 923487 > 43598}}
:1
if
if関数は、引数1が数値0でもスペースでも長さ0の文字列でもない場合に引数2を、左のいずれかである場合に引数3を返します。
{{#if: ああああ | 空文字列でない | 空文字列である }}
:空文字列でない{{#if: 9 > 11 | 真です | 偽です }}
:真です(文字列「9 > 11」は空文字列ではないため)
ifexpr
ifexpr関数はif関数とexpr関数を組み合わせたようなもので、引数1を数式として評価し、その計算結果が数値0でもスペースでも長さ0の文字列でもない場合に引数2を、左のいずれかである場合に引数3を返します。
{{#ifexpr: 923487 > 43598 | 真 | 偽 }}
:真{{#ifexpr: 9 > 11 | 真です | 偽です }}
:偽です
ifeq
ifeq関数は、引数1と引数2を比較し、同値である場合に引数3を、そうでない場合に引数4を返します。
{{#ifeq: 3.1416 | 3.1416 | 等しい | 等しくない }}
:等しい{{#ifeq: 已己巳己 | 己巳已巳 | 等しい | 等しくない }}
:等しくない{{#ifeq: {{#expr: ( 6 ^ 6 + 6 ) / ( 6 + 6 / 6 ) }} | 6666 | 等しい | 等しくない }}
:等しい
switch
switch関数は以下のように書かれ、引数1と同じ<値>が見つかった場合にその<値>に付いている等号の右側にある<返り値>を返し、見つからなかった場合に関数の最後の区切りに書かれた文字列(<見つからなかったときの返り値>)を返します。
{{#switch: 引数1 | 値1 = 返り値1 | 値2 = 返り値2 ... | 値n = 返り値n |<見つからなかったときの返り値> }}
{{#switch: 月 | 鶴 = 20点 | 鶯 = 20点 | 幕 = 20点 | 不如帰 = 10点 | 八橋 = 10点 | 蝶 = 10点 | 猪 = 10点 | 月 = 20点 | 盃 = 20点 | 鹿 = 20点 | 小野道風 = 20点 | 鳳凰 = 20点 | 該当する札がありません。}}
:20点
モジュール
モジュールは、Luaというプログラミング言語を用いてさまざまな処理を行う拡張機能です。関数に引数を渡して処理をさせ、返り値を要求します。モジュールページはすべてモジュール名前空間に置かれます。一つのモジュールページにはそれぞれfunction 関数名(引数)
-end
で定義されるいくつかの関数があります。
関数を呼び出して引数を渡すには、{{#invoke: モジュール名 | 関数名 | 引数1 | 引数2...}}
と入力します。すると、関数が引数を使って処理を実行し、単一の値を文字列として返してくれます。
{{#invoke:いつの間に|itsunomani|あびゃびゃ}}
:いあびゃびゃつ
Botによる編集
Botによる編集の方法については、実のところ、常習者の誰も理解していません。ページ情報の取得や記事の編集・作成などが自動でできるようですが、本当にそんなことができるのでしょうか。APIとやらを使うようですが、APIとは何者なのでしょうか。