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