Template:Array: Difference between revisions
add parameter of "last" to get function (same output as transcluding array-count as the last parameter) |
convert to using lua module |
||
Line 1: | Line 1: | ||
<includeonly>{{# |
<includeonly>{{safesubst:#invoke:ArrayList|main|{{{1}}}|{{{2}}}|{{{3}}}|{{{4}}}|{{{5}}}}}</includeonly><noinclude> |
||
|count= |
|||
{{#expr:{{#invoke:string|count|{{#invoke:String|replace|source={{{2}}}|pattern=^(%s*)(%{{{3}}}*)(.-)(%{{{3}}}*)(%s*)$|replace=%3|plain=false}}|{{{3}}}}}+1}} |
|||
|get= |
|||
{{#invoke:String2|split|txt={{#invoke:String|replace|source={{{2}}}|pattern=^(%s*)(%{{{3}}}*)(.-)(%{{{3}}}*)(%s*)$|replace=%3|plain=false}}|sep="{{{3}}}"|idx={{#switch:{{{4}}}|last={{#expr:{{#invoke:string|count|{{#invoke:String|replace|source={{{2}}}|pattern=^(%s*)(%{{{3}}}*)(.-)(%{{{3}}}*)(%s*)$|replace=%3|plain=false}}|{{{3}}}}}+1}}|{{{4}}}}}}} |
|||
|pos= |
|||
{{#invoke:String|replace|source= |
|||
{{#invoke:String2|split|txt= |
|||
{{for loop|{{{3}}}|call=Array/pos|pv=pos |
|||
|stop={{#expr:{{#invoke:string|count|{{#invoke:String|replace|source={{{2}}}|pattern=^(%s*)(%{{{3}}}*)(.-)(%{{{3}}}*)(%s*)$|replace=%3|plain=false}}|{{{3}}}}}+1}} |
|||
|pc1n=arrayitem|pc1v={{{4}}} |
|||
|pc2n=arraylist|pc2v={{{2}}} |
|||
|pc3n=arraysep|pc3v="{{{3}}}" |
|||
}} |
|||
|sep={{#if:{{{5|}}}|"{{{3|}}}"|"^"}}|idx={{{5|1}}} |
|||
}} |
|||
|pattern=^(%s*)(%{{{3}}}*)(.-)(%{{{3}}}*)(%s*)$|replace=%3|plain=false}} |
|||
}}</includeonly><noinclude> |
|||
{{Documentation}} |
{{Documentation}} |
||
</noinclude> |
</noinclude> |
Latest revision as of 14:12, 26 July 2024
This template uses Lua: |
This template will allow manipulation or retrieve properties of an array list using a delimiter. It handles four functions: count, get, pos and math.
Usage
[edit]{{Array|<Function>|<Array items>|<Delimiter>|<Property>|Parameters (optional)}}
5th parameter only valid with pos function when limiting multiple outputs to a single position.
Functions
[edit]- Count
Will count the total number of items in the array using the designated separator. Leading or trailing separators are not stripped.
{{Array|count|This is my array| }}
→ 4{{Array|count|An,array,separated,by,commas|,}}
→ 5{{Array|count|An,array,with,trailing,commas,|,}}
→ 6
- Get
Will get the Nth item in the array, numeric value only. Can use negative value to work backwards. Last or -1 will get end item. Invalid value returns error.
{{Array|get|My,wiki,test,array|,|3}}
→ test{{Array|get|A.list.of.dot.separated.items|.|2}}
→ list{{Array|get|A sentence of typical words| |5}}
→ words{{Array|get|The almost last item is nearly final| |-2}}
→ nearly{{Array|get|The last item is final| |last}}
→ final{{Array|get|Invalid input returns error| |foobar}}
→ void:invalid
- Pos
Will retrieve the position in array of the search item. If duplicates are found, will output all positions delimited by comma. Output can be limited by specifying a 5th parameter.
{{Array|Pos|<Array items>|<Delimiter>|<Search Term>|<Nth occurrence> (optional)}}
{{Array|pos|A sentence of typical words| |sentence}}
→ 2{{Array|pos|A.wiki.test.string.in.a.test.array|.|unmatched}}
→ void:nomatch{{Array|pos|A.wiki.test.string.in.a.test.array|.|test}}
→ 3,7{{Array|pos|Position,of,the,second,test,in,a,test,array|,|test|2}}
→ 8{{Array|pos|2,4,6,6,7,11,12|,|7}}
→ 5{{Array|pos|2,4,6,6,7,11,12|,|6|2}}
→ 4
- Math
Will do calculations on the array items if all numeric. Options are sum (sum of all item numbers), min and max.
{{Array|math|2,4,6,6,7,12|,|sum}}
→ 37{{Array|math|2,4,6,6,7,12|,|min}}
→ 2{{Array|math|2,4,6,6,7,12|,|max}}
→ 12{{Array|math|3.3.4.5.5.6|.|min}}
→ 3{{Array|math|3.3.f.5.5.q|.|min}}
→ void:isalpha