Jump to content

Extension:WSArrays

From mediawiki.org
This page is a translated version of the page Extension:WSArrays and the translation is 12% complete.
警告 警告: この拡張機能は、Parsoid の使用によって意図されているように、構文解析を並列化する計画と互換性がありません。 従って、この拡張機能の将来は不確かであり、数年内には標準の MediaWiki パーサーと互換性がなくなると予想されています。 詳細情報は、T250963 および 拡張機能タグを順次、順番に処理するためのサポートがありません を参照してください。
MediaWiki 拡張機能マニュアル
WSArrays
リリースの状態: 保守されていない
実装 パーサー関数
説明 連想配列と多次元配列の作成と走査を可能にするパーサ関数を追加。
作者 Wikibase Solutions
最新バージョン 5.5.4 (2022-09-12)
MediaWiki 1.31+
PHP 5.3+
データベースの変更 いいえ
  • $wfSkipVersionControl
  • $wfEnableResultPrinter
ライセンス GNU 一般公衆利用許諾書 2.0 以降
ダウンロード

The WSArrays (or ComplexArrays) extension creates an additional set of parser functions that operate on multidimensional and associative arrays.

関数

この拡張機能では、20以上のパーサー関数が定義されています。

関数名 別名
#complexarraydefine #cadefine
#complexarrayprint #caprint
#complexarraypush #capush
#complexarraysize #casize
#complexarrayaddvalue #caaddvalue, #caadd, #caaddv, #caset
#complexarrayreset #careset, #caclear
#complexarraysort #casort
#complexarraymap #camap
#complexarraymaptemplate #camaptemplate, #camapt, #catemplate
#complexarrayextract #caextract
#complexarrayunique #caunique
#complexarraymerge #camerge
#complexarraypusharray #capusharray
#complexarrayslice #caslice
#complexarraysearch #casearch
#complexarraysearcharray #casearcharray, #casearcha
#complexarraydefinedarrays #cadefinedarrays, #cadefined, #cad
#complexarrayarraymap #caamap, #camapa
#complexarrayparent #caparent, #capapa, #camama
#complexarrayunset #caunset, #caremove
#complexarraydiff #cadiff

配列の構築

complexarraydefine

This function creates a new array, identified by 'key'.

構文

{{#complexarraydefine:key|array|delimiter|noparse}}

説明
名前 必須かどうか 既定 説明
key 必須 配列の名前
array 必須 The array as WSON, or using a delimiter.
delimiter 省略可能 , The delimiter used when defining a simple array.
noparse 省略可能 Arguments to tell the parser what to parse in the 'array' (see #Manipulation of the parser).
Define a multidimensional array called 'baz'
{{#cadefine:baz|(("foo":(("bar":"baz"))))}}
Define a simple array called 'bex' (note, sometimes WSArrays does not properly recognise delimiter-separated arrays; try adding a delimiter instead of using the default (,))
{{#cadefine:bex|foo; bar; baz|;}}

complexarraydefinedarrays

このデバッグ関数は、現在定義されているすべての配列のキーを含む新しい配列を作成します。

構文
{{#complexarraydefinedarrays: key}}
説明
名前 必須かどうか 説明
key 必須 The name of the array that will contain the keys of the currently defined arrays

配列の操作

抽出

complexarrayprint

この関数は、配列の値をカスタムフォーマットで表示します。

構文
{{#complexarrayprint:key|options|noparse}}
説明
名前 必須かどうか 説明
key 必須 The name of the (sub)array that should be printed
options 省略可能
  • markup – Print the result as WSON.
noparse 省略可能 Set to "true" to tell the parser not treat the output as wiki syntax.

We have an array called 'foobar':

  • 0
    • foo: bar
    • baz: quz
  • 1
    • foo: quz
    • baz: bar
  • 2
    • baz: bar
    • foo: bar
  • 3
    • baz: {{SomeTemplate|Test}}. ?UNIQ347fb3f0c7f3d9c-5
If you defined the array with noparse, the behavior is different.
関数 結果
{{#caprint: foobar}}
  • 0
    • foo: bar
    • baz: quz
  • 1
    • foo: quz
    • baz: bar
  • 2
    • baz: bar
    • foo: bar
  • 3
    • baz: Test. {{SomeTemplate|Test}}
{{#caprint: foobar[0]}}
  • foo: bar
  • baz: quz
{{#caprint: foobar[3]}}
  • Test. {{SomeTemplate|Test}}
{{#caprint: foobar[0][foo]}}
bar

complexarraysize

This parser function returns the size of a (sub)array.

構文
{{#complexarraysize:key|options}}
説明
名前 必須かどうか 説明
key 必須 (下位) 配列の名前
options 省略可能
  • top – Only count the number of items in the top array (not recursively).

We have an array called 'foobar':

  • 0
    • foo: bar
    • baz: quz
  • 1
    • foo: quz
    • baz: bar
  • 2
    • baz: bar
    • foo: bar
関数 結果
{{#casize: foobar}}
9
{{#casize: foobar[1]}}
2
{{#casize: foobar|top}}
3

complexarrayslice

This parser function can extract a slice from an array.

構文
{{#complexarrayslice:new_key|key|offset|length}}
説明
名前 必須かどうか 説明
new_key 必須 The name of the array that is going to be created
key 必須 The name of the array that needs to be sliced
offset 必須 For a positive offset, the new array will start at that offset in the first array. For a negative offset, the new array will start that far from the end of the first array
length 省略可能 The length of the new array.

We have an array called foobar:

  • 0
    • foo: bar
    • baz: quz
  • 1
    • baz: bar
    • foo: bar
  • 2
    • boo: bar
    • far: quz
  • 3
    • foo: quux
    • bar: bar
関数 結果
{{#caslice: boofar | foobar | 2 | 1 }}

This gives the third element of the array.

boofar:

  • 0
    • boo: bar
    • far: quz
{{#caslice: boofar | foobar | -1 }}

This gives the last element of the array:

boofar:

  • 0
    • foo: quux
    • bar: bar

complexarraysearch

This parser function searches through an array for a keyword and returns the corresponding key of the first match. If there are no matches, it will return 0.

構文
{{#complexarraysearch:key|keyword}}
説明
名前 必須かどうか 説明
key 必須 The name of the array that is going to be searched
keyword 必須 The keyword that is going to get searched for.

We have an array called foobar:

  • 0
    • foo: bar
    • baz: quz
  • 1
    • baz: bar
    • foo: bar
  • 2
    • boo: bar
    • far: quz
  • 3
    • foo: quux
    • bar: bar
関数 結果
{{#casearch: foobar | quux }}
WSArray[3][foo]
{{#casearch: foobar | bar }}
WSArray[0][foo]

complexarraysearcharray

This parser function searches through an array for a keyword and creates a new array with the corresponding keys of the matches. If there are no matches, it will return 0.

構文
{{#complexarraysearcharray:new_key|key|keyword}}
説明
名前 必須かどうか 説明
new_key 必須 The name of the array that is going to be created containing all the keys
key 必須 The name of the array that is going to be searched
keyword 必須 The keyword that is going to get searched for.

We have an array called foobar:

  • 0
    • foo: bar
    • baz: quz
  • 1
    • baz: bar
    • foo: bar
  • 2
    • boo: bar
    • far: quz
  • 3
    • foo: quux
    • bar: bar
関数 結果
{{#casearcha: boofar | foobar | bar }}

boofar:

  • foobar[0][foo]
  • foobar[1][baz]
  • foobar[1][foo]
  • foobar[2][boo]
  • foobar[3][bar]
{{#casearcha: boofar | foobar | quux }}

boofar:

foobar[3][foo]

Alteration

complexarrayunset

This function unsets the given key.

構文
{{#complexarrayunset: key }}
説明
名前 必須かどうか 説明
key 必須 The key which should be unset

Suppose we have an array called "foobar":

  • foo
    • bar
    • qux
  • baz
関数 結果
{{#caunset: foobar[foo][1] }}

foobar:

  • foo
    • bar
  • baz

complexarrayaddvalue

This parser function adds a value or subarray to an existing array or replaces an existing subarray with that value.

構文
{{#complexarrayaddvalue:key|value}}

説明
名前 必須かどうか 説明
key 必須 The name of the subarray that will be created
value 必須 A value in plaintext or a subarray in any supported markup language.

We have an array called 'foobar':

  • 0
    • foo: bar
    • baz: quz
  • 1
    • foo: quz
    • baz: bar
  • 2
    • baz: bar
    • foo: bar
関数 結果
{{#caadd: foobar[0][bex]|["abc","123"]}}
  • 0
    • foo: bar
    • baz: quz
    • bex
      • abc
      • 123
  • 1
    • foo: quz
    • baz: bar
  • 2
    • baz: bar
    • foo: bar
{{#caadd: foobar[3][foo][bar][baz]|bex}}
  • 0
    • foo: bar
    • baz: quz
  • 1
    • foo: quz
    • baz: bar
  • 2
    • baz: bar
    • foo: bar
  • 3
    • foo
      • bar
        • baz: bex
{{#caadd: foobar[0]|["abc","123"]}}
  • 0
    • abc
    • 123
  • 1
    • foo: quz
    • baz: bar
  • 2
    • baz: bar
    • foo: bar

complexarrayreset

This parser function resets all arrays or one array.

構文
{{#complexarrayreset:key}}
説明
名前 必須かどうか 説明
key 省略可能 The name of the array that must be unset, when empty, all arrays will be unset.

complexarraysort

This parser function sorts an array.

構文
{{#complexarraysort:key|options|sortingkey}}
説明
名前 必須かどうか 説明
key 必須 The array that needs to be sorted
options 省略可能
  • multisort – Sort the array using multisort
  • asort – Sort the array using asort
  • arsort – Sort the array using arsort
  • krsort – Sort the array using krsort
  • natcasesort – Sort the array using natcasesort
  • natsort – Sort the array using natsort
  • rsort – Sort the array using rsort
  • shuffle – Shuffle the array
  • keysort – Sort a two-dimensional array according to the values of a key in the second array. You can change the order to descending by appending ",desc" in options (so "keysort,desc").
sortingkey 省略可能 (optional, required when using keysort) The key with which the array must be sorted when using keysort.

See the PHP documentation for the sorting algorithms.

We have an array called 'foobar':

  • 0
    • foo: bar
    • baz: quz
  • 1
    • foo: quz
    • baz: bar
  • 2
    • baz: bar
    • foo: bar
関数 結果
{{#casort: foobar|keysort|foo}}
  • 0
    • foo: bar
    • baz: quz
  • 1
    • baz: bar
    • foo: bar
  • 2
    • foo: quz
    • baz: bar
{{#casort: foobar|keysort,desc|foo}}
  • 0
    • foo: quz
    • baz: bar
  • 1
    • foo: bar
    • baz: quz
  • 2
    • baz: bar
    • foo: bar
{{#casort: foobar|shuffle}}
  • 0
    • foo: bar
    • baz: quz
  • 1
    • foo: quz
    • baz: bar
  • 2
    • baz: bar
    • foo: bar

complexarrayunique

This parser function removes duplicate keys and values from a array.

構文
{{#complexarrayunique:key}}
説明
名前 必須かどうか 説明
key 必須 配列の名前。

Interaction

complexarraypush

This parser function pushes a new value or subarray to the end of an existing (sub)array.

構文
{{#complexarraypush:key|value|noparse}}
説明
名前 必須かどうか 説明
key 必須 The name of the (sub)array
value 必須 A value in plaintext or any supported markup language.
noparse 省略可能 Arguments to tell the parser what to parse in the 'subject' (see #Manipulation of the parser).

We have an array called 'foobar':

  • 0
    • foo: bar
    • baz: quz
  • 1
    • foo: quz
    • baz: bar
  • 2
    • baz: bar
    • foo: bar
関数 結果
{{#capush: foobar|bex}}
  • 0
    • foo: bar
    • baz: quz
  • 1
    • foo: quz
    • baz: bar
  • 2
    • baz: bar
    • foo: bar
  • test
{{#capush: foobar[1]|bex}}
  • 0
    • foo: bar
    • baz: quz
  • 1
    • foo: quz
    • baz: bar
    • bex
  • 2
    • baz: bar
    • foo: bar
{{#capush: foobar | (("bex":"baz")) }}
  • 0
    • foo: bar
    • baz: quz
  • 1
    • foo: quz
    • baz: bar
    • bex
  • 2
    • baz: bar
    • foo: bar
  • 3
    • bex: baz

complexarrayextract

This parser function creates a new array from a subarray.

構文
{{#complexarrayextract: new_key | subarray }}

説明

名前 必須かどうか 説明
new_key 必須 The name of the array that is going to be created
subarray 必須 The subarray that needs to be extracted.

We have an array called 'foobar':

  • 0
    • foo: bar
    • baz: quz
  • 1
    • baz: bar
    • foo: bar
Function Result
{{#caextract: boofar | foobar[0] }}

boofar:

  • 0
    • foo: bar
    • baz: quz

complexarraymerge

This parser function creates a new array by merging two or more arrays.

構文
{{#complexarraymerge: new_key | key1 | key2 | ... | keyn | options }}
説明
名前 必須かどうか 説明
new_key 必須 The name of the array that is going to be created
key1 必須 The name of the first array
key2 必須 The name of the second array
...
keyn 省略可能 The name of the n'th array
options
  • recursive – Merge recursively

We have an array called 'foobar':

  • 0
    • foo: bar
    • baz: quz
  • 1
    • baz: bar
    • foo: bar

and an array called 'boofar':

  • 0
    • boo: bar
    • far: quz
  • 1
    • foo: quux
    • bar: bar
関数 結果
{{#camerge: farboo | foobar | boofar}}

farboo:

  • 0
    • foo: bar
    • baz: quz
  • 1
    • baz: bar
    • foo: bar
  • 2
    • boo: bar
    • far: quz
  • 3
    • foo: quux
    • bar: bar

complexarraydiff

This parser function calculates the difference between two or more arrays and stores that in a new array. It shadows the PHP function array_diff_assoc().

構文
{{#complexarraydiff: new_key | key1 | key2 | ... | keyn }}
説明
名前 必須かどうか 説明
new_key 必須 The name of the array that is going to be created
key1 必須 The name of the first array
key2 必須 The name of the second array
...
keyn 省略可能 The name of the n'th array

complexarraypusharray

This parser function creates a new array by pushing one or more arrays to the end of another array.

構文
{{#complexarraypusharray:new_key|key1|key2|...|keyn}}
説明
名前 必須かどうか 説明
new_key 必須 The name of the array that is going to be created
key1 必須 The name of the first array
key2 必須 The name of the second array
...
keyn 省略可能 The name of the n'th array

We have an array called 'foobar':

  • 0
    • foo: bar
    • baz: quz
  • 1
    • baz: bar
    • foo: bar

and an array called 'boofar':

  • 0
    • boo: bar
    • far: quz
  • 1
    • foo: quux
    • bar: bar
関数 結果
{{#capusharray: farboo | foobar | boofar}}

farboo:

  • 0
    • 0
      • foo: bar
      • baz: quz
    • 1
      • baz: bar
      • foo: bar
  • 1
    • 0
      • boo: bar
      • far: quz
    • 1
      • foo: quux
      • bar: bar

Iteration

complexarraymap

This parser function iterates over an array and maps the values of the array onto a mapping key.

構文
{{#complexarraymap:key|mapping_key|subject|delimiter|show}}
説明
名前 必須かどうか 説明
key 必須 The name of the array that is going to be mapped
mapping_key 必須 The keyword that will be replaced in the subject
subject 必須 The string on which the mapping will be applied
delimiter 省略可能 The delimiter appended to every line, except the last
show 省略可能 Set this to true in order to show the mapping key when no string value for it exists.

We have an array called foobar:

  • 0
    • bar
    • quz
  • 1
    • bar
    • bar
  • 2
    • bar
    • quz
  • 3
    • quux
関数 結果
{{#camap: foobar | @@@ | What the @@@[0] is this @@@[1]<br/> }}

What the bar is this quz
What the bar is this bar
What the bar is this quz
What the quux is this

{{#camap: foobar | @@@ | What the @@@[0] is this @@@[1]<br/> | true }}

What the bar is this quz
What the bar is this bar
What the bar is this quz
What the quux is this @@@[1]

{{#camap: foobar | @@@ | What the @@@[0] is this @@@[1] | <br/> | true }}

What the bar is this quz
What the bar is this bar
What the bar is this quz
What the quux is this @@@[1]

complexarraymaptemplate

This parser function maps the contents of an array in a template.

構文
{{#complexarraymaptemplate:key|template}}
説明
名前 必須かどうか 説明
key 必須 The name of the array that needs to be mapped
template 必須 The name of the template the array must be mapped to.

We have an array called 'foobar', an array called 'boofar' and an array called 'bazbar', resp.:

foobar:

  • 0
    • foo: bar
    • baz: quz
  • 1
    • baz: bar
    • foo: bar
  • 2
    • foo: quz
    • baz: bar
    • bar
      • bex
      • box

boofar:

  • foobar
  • bazbar
  • boofar

bazbar:

  • foo: bar
  • boo: far
関数 結果
{{#catemplate: foobar|Template}}
{{Template|foo=bar|baz=quz}}
{{Template|baz=bar|foo=bar}}
{{Template|foo=quz|baz=bar|bar=["bex","box"]}}
{{#catemplate: boofar|Template}}
{{Template|foobar|bazbar|boofar}}
{{#catemplate: bazbar|Template}}
{{Template|foo=bar|boo=far}}

匿名

These functions use anonymous arrays. The function handles both the definition and output of the array. You do not have to define an array beforehand.

complexarrayarraymap

This parser function is very similar to #complexarraymap, but the input and output is handled in the same function (which makes it anonymous).

構文
{{#complexarrayarraymap: value | delimiter | variable | formula | new_delimiter }}
説明
名前 必須かどうか 説明
value 必須 The value to be split
delimiter 必須 The delimiter to split value on
variable 必須 String to be replaced in 'formula'
formula 必須 String where 'variable' is replaced
new_delimiter 必須 The delimiter between results.
関数 結果
{{#caamap: a, b, c | , | @@ | Current variable: @@ | !<br/>}}
Current variable: a!<br/>
Current variable: b!<br/>
Current variable: c
{{#caamap: a; b; c | ; | ! | Just ! test | <br/>}}
Just a test<br/>
Just b test<br/>
Just c test

complexarrayparent

This function returns the key of the parent of the given key.

構文
{{#complexarrayparent: key }}
説明
名前 必須かどうか 説明
key 必須 The key from which the parent key should be returned
関数 結果
{{#caparent: foobar[0][1][test] }}
foobar[0][1]

Wairudokado operator

The Wairudokado operator (Japanese: ワイルドカード, pronounced Wairudokādo, meaning wildcard; a tribute to the Scope Resolution Operator in PHP) is a powerful operator that gives users the ability to use wildcards when manipulating or printing subarrays.

This operator can be used on every parser function that supports subarrays (such as #complexarrayprint). Suppose we have the array foobar:

  • 0
    • name: Foo
  • 1
    • name: Bar
  • 2
    • name: Baz
  • 3
    • name: Bex

And we want to print every value of "name". We could use a #complexarraymap to iterate over the array and print each value separately, but we can also use a Wairudokado operator in the #complexarrayprint function.

Function Result
{{#caprint: foobar[*][name]}}
  • Foo
  • Bar
  • Baz
  • Bex
When a Wairudokado operator is at the end of the pointer, it is ignored. Sequential Wairudokado operators are interpreted as one.

Semantic MediaWiki

This result printer requires Semantic MediaWiki 3.0 or higher.

This extension introduces a new format for displaying Semantic MediaWiki results. In order to use the new format, use format=complexarray. Because the result printer defines a new complexarray, you need to provide a name for that array using name=<name>; if name is left empty, the result printer will print the array as WSON.

Semantic variables

A list of semantic variables is included in the complexarray when you query a list of pages. The following variables are included:

catitle
The title of the page
cafullurl
The full URL of the page
canamespace
The namespace the page lives in
caexists
Whether or not the page exists (0/1)
cadisplaytitle
The displaytitle of the page

Additional parameters

WSArrays defines two new parameters:

name
The name of the array that is going to be created
simple
Option to hide Semantic variables from page results as well as hiding mailto: prefixes on email results (yes/no, default: yes)

Seeing tables instead of complex arrays

In case Semantic MediaWiki renders a table when format is complexarray, you must first check if you have set $wfEnableResultPrinter to true. If this is the case and it still does not work, WSArrays might not have been able to create a symbolic link from the SemanticMediaWiki folder to the WSArrays folder. This link can be manually created by copying the file ComplexArrayPrinter.php from the extension's root folder to SemanticMediaWiki/src/Query/ResultPrinters.

Writing extensions

While WSArrays provides many functions for manipulating and showing arrays, sometimes these are not enough. For this reason, we provide an interface to easily extend the functionality of WSArrays with new parser functions.

Extensions are placed in the extensions/ directory. Each extension is implemented as a derived class from Extension.php. The name of the file in which this class will be located, must be the same as the class name (case-sensitive). An example for the class ExampleClass would be ExampleClass.php. The class must implement at least the following methods:

<?php

class ExampleClass extends Extension {
    /**
     * Returns the name of this parser function.
     *
     * @return string
     */
    public function getName() {
        return 'exampleclass';
    }

    /**
     * Should return an array containing aliases of this parser function.
     *
     * @return array
     */
    public function getAliases() {
        return [
            'caexample',
            'caexampleclass'
        ];
    }

    /** 
     * Should return either 'sfh' or 'normal'. 
     * When 'sfh' is returned, the setFunctionHook function is called with Parser::SFH_OBJECT_ARGS as a parameter, allowing for a deeper integration with the parser.
     *
     * @return string
     */
    public function getType() {
        return 'sfh';
    }

    /**
     * This function is called by the parser.
     *
     * @return mixed
     */
    public static function getResult( Parser $parser, $arg1, $arg2, ...) {
        return 'Foobar';
    }
}

?>

Returning the result

getResult() is executed by the parser hook. You can read how to write parser functions here. The documentation below is specific to WSArrays.

Manipulating arrays

All arrays in WSArrays must be stored as a ComplexArray object. If you want to manipulate an existing array, you must convert the ComplexArray object to an array, manipulate the array and then convert it back to a ComplexArray object.

public static function getResult( Parser $parser, $arg1, $arg2, $arg3 ) {
    // $arg1 contains the name of an existing array; getArray() will return the array.
    $array = WSArrays::$arrays[$arg1]->getArray();

    // Manipulate array...

    // Arrays are stored in the variable $arrays, located in the WSArrays class.
    // If you do not save the array as a ComplexArray, existing parser functions will not work with this array.
    WSArrays::$arrays[$arg1] = new ComplexArray( $array );

    return null;
}

or when using SFH_OBJECT_ARGS:

public static function getResult( Parser $parser, $frame, $args ) {
    // Convert the first element in the $args array into a string.
    // Omit PPFrame::NO_ARGS | PPFrame::NO_TEMPLATES if you need the parser to first parse the arguments.
    // You can also use GlobalFunctions::getSFHValue() and GlobalFunctions::rawValue().
    if ( isset( $args[0] ) ) {
        $arg1 = trim( $frame->expand( $args[0], PPFrame::NO_ARGS | PPFrame::NO_TEMPLATES ) );
    }

    // $arg1 contains the name of an existing array.
    $array = WSArrays::$arrays[$arg1]->getArray();

    // Manipulate array...

    // Arrays are stored in the variable $arrays, located in the WSArrays class.
    // If you do not save the array as a ComplexArray, existing parser functions will not work with this array.
    WSArrays::$arrays[$arg1] = new ComplexArray($array);

    return null;
}

Registering the extension

In order to enable the extension, you must add the extension name and aliases to WSArrays.i18n.php.

Add the following to $magicWords['en']:

'<extensionname>' => [ 0, '<extensionname>' ],
'<alias1>' => [ 0, '<alias1>' ],
'<alias2>' => [ 0, '<alias2>' ],
...

Manipulation of the parser

WSArrays manipulates the Parser in several ways. In order to use WSArrays to its fullest extend, it is important to know about this. This only applies to the following parser functions:

How WSArrays manipulates the parser

WSArrays manipulates the parser by using SFH_OBJECT_ARGS. This way, the parser arguments are passed as PPNode objects instead of plain text. This allows for conditional expansion of the parse tree (see doc.wikimedia.org for more information). Using SFH_OBJECT_ARGS we can tell the parser to not parse the elements and return the raw text inputted by the user, which we can then parse in WSArrays.

How to control the manipulation

Different people have different needs, which is why we allow you to control the manipulation of the parser. Again, this documentation only applies to the parser functions listed above.

By default, all input is automatically parsed by the parser before it is passed over to WSArrays (except for the 'map' in #complexarraymap and #complexarrayprint.) This allows you to use template parameters as well as magic words and templates when manipulating or defining arrays. This is however not always what you want. For instance, when you want to use a very complex template inside of an array, and you don't want to completely break when you use #complexarrayprint on it, you can tell WSArrays to not parse the input. If you then print the array, the template is printed as if it were enclosed with nowiki tags.

What if I want to parse the template later on?

Not parsing the template entirely is probably not what you want. WSArrays tells the parser to parse the element when necessary, such as when using it in a map or when printing it as a value.

Arguments

You can include the following arguments as a comma-separated list in the 'noparse'-parameter of any applicable function.

Argument 結果
NO_IGNORE Include the constant PPFrame::NO_IGNORE in the frame expansion.
NO_ARGS Include the constant PPFrame::NO_ARGS in the frame expansion.
NO_TEMPLATES Include the constant PPFrame::NO_TEMPLATES in the frame expansion, which tells the parser not to parse templates.
NO_TAGS Include the constant PPFrame::NO_TAGS in the frame expansion, which tells the parser not to parse tags.

Using WSArrays in other extensions

WSArrays provides an interface to easily use, manipulate and create arrays from any extension in the wiki.

Initialisation

In order to use the interface, include the ComplexArrayWrapper class into your extension, like so:

include_once "/dir/to/ComplexArrayWrapper.php";

$interface = new ComplexArrayWrapper();

Getting the contents of an array

The contents of the array "foobar" can be retrieved like so:

$array = $interface->on("foobar")->get();

Getting the contents of a subarray

The contents of "foobar[Foo][Bar]" can be retrieved like so:

$array = $interface->on("foobar")->in(["Foo", "Bar"])->get();

Changing the contents of an array

The contents of the array "foobar" can be changed like so:

$interface->on("foobar")->set(["foo", "bar" => ["baz", "bar"]]);

The contents of a specific value or subarray can also be changed like so:

$interface->on("foobar")->in(["Foo", "Bar"])->set("Specific value");

// または

$interface->on("foobar")->in(["Foo", "Bar"])->set(["sub", "array"]);
If the array or subarray does not exist, they are automatically created. This is also the preferred way of creating a new array.

Unsetting an array

An array can be unset like so:

$interface->on("foobar")->unsetArray();

インストール

設定

WSArrays has several configuration parameters.

$wfSkipVersionControl
Option to skip version control and force the initialization of WSArrays, accepts a boolean (default: false). This may crash your wiki.
$wfEnableResultPrinter
Option to enable the Semantic MediaWiki result printer, accepts a boolean (default: false). Setting this to true if you have not correctly installed the result printer (see #Installation) will result in your wiki not working.

関連項目