Semantic MediaWikiDit bericht verdwijnt nadat alle relevante taken zijn afgerond.

Er is één onvoltooide of openstaande taak, die nodig is om het bijwerken van Semantic MediaWiki te voltooien. Een beheerder of gebruiker met voldoende rechten kan deze uitvoeren. Dit moet worden gedaan voordat nieuwe gegevens worden toegevoegd om tegenstrijdigheden te voorkomen.

Geen bewerkingssamenvatting
Geen bewerkingssamenvatting
Regel 23: Regel 23:
local map = frame.args.map or mw.text.trim(frame.args[4]) or ""
local map = frame.args.map or mw.text.trim(frame.args[4]) or ""
local outputsep = frame.args.outputsep or mw.text.trim(frame.args[5]) or ""
local outputsep = frame.args.outputsep or mw.text.trim(frame.args[5]) or ""
local outputsep = outputsep:gsub( [[\s]], " " ) --allow for spaces
local outputsep = string:gsub( outputsep, [[\s]], " " ) --allow for spaces


local valTable = {}
local valTable = {}
Regel 29: Regel 29:
for val in string.gmatch( vals, sepPattern ) do
for val in string.gmatch( vals, sepPattern ) do
-- replace varstr in map with va;
-- replace varstr in map with va;
local newVal = map:gsub( varstr, val )
local newVal = string.gsub( map, varstr, val )
table.insert( valTable, newVal )
table.insert( valTable, newVal )
end
end

Versie van 5 sep 2023 18:42

Module:Arraymap

Summary
Module similar in functionality to PageForms's arraymap.


==Simple==
{{#invoke:Arraymap |map 
|vals=Álvar,Núñez ,, Cabeza,de Vaca,,|sep=,,
|varstr=xxx |map=(xxx) |outputsep=;\s
}}

Luafout op regel 25: calling 'gsub' on bad self (string expected, got table)

Or, using unnamed, sequential approach:

{{#invoke:Arraymap |map |Álvar,Núñez ,, Cabeza, de Vaca,, |, |xxx |[xxx] |;\s}}

Luafout op regel 25: calling 'gsub' on bad self (string expected, got table)

Special use cases

If sep needs to be a space, use %s?

Escaped syntax for curly braces and pipes

Escape {{... }} as %{%{ ...  %}%}
Escape | as %

{{#invoke:Arraymap |map
|vals=Persoon/-1002367743,Persoon/400
|sep=,
|varstr=xxx
|map=%{%{#ask: [[xxx]] %mainlabel=- %?Has name= %}%} 
|outputsep=;\s
|escaped=true
|fuzzy=false
}}
Luafout op regel 25: calling 'gsub' on bad self (string expected, got table)

--[[
{{#invoke:Arraymap
|vals=
|sep=
|varstr=
|map=
|outputsep=
}}

]]--

local p = {}

p.map = function(frame)
	local vals = frame.args.vals or mw.text.trim(frame.args[1]) or ""
	local sep = frame.args.sep or mw.text.trim(frame.args[2]) or ","
	local sepPattern = '[^' .. sep .. ']+'
	--local valTable = {}
	-- for val in string.gmatch( vals, sep ) do
	--	table.insert( valTable, val)
	-- end
	local varstr = frame.args.varstr or mw.text.trim(frame.args[3]) or "@@@"
	local map = frame.args.map or mw.text.trim(frame.args[4]) or ""
	local outputsep = frame.args.outputsep or mw.text.trim(frame.args[5]) or ""
	local outputsep = string:gsub( outputsep, [[\s]], " " ) --allow for spaces

	local valTable = {}
	
	for val in string.gmatch( vals, sepPattern ) do
		-- replace varstr in map with va;
		local newVal = string.gsub( map, varstr, val )
		table.insert( valTable, newVal )
	end
	local newVals = table.concat( valTable, outputsep )
	return newVals
	
end

return p