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 16: Regel 16:
local sep = frame.args.sep or mw.text.trim(frame.args[2]) or ","
local sep = frame.args.sep or mw.text.trim(frame.args[2]) or ","
--local sepPattern = '[^' .. sep .. ')+'
--local sepPattern = '[^' .. sep .. ')+'
local sepPattern = sep
--local sepPattern = sep
--local valTable = {}
--local valTable = {}
-- for val in string.gmatch( vals, sep ) do
-- for val in string.gmatch( vals, sep ) do
Regel 26: Regel 26:
--allow for spaces with \s
--allow for spaces with \s
local outputsep = string.gsub( outputsep, [[\s]], " " )
local outputsep = string.gsub( outputsep, [[\s]], " " )
 
local valTable = {}
local valTable = {}
local valTable = mw.text.split( vals, sep )
local mappedTable = {}
for k,val in valTable do
local val = mw.text.trim( val )
local newVal = string.gsub( map, varstr, val )
table.insert( mappedTable, newVal )
end
local newVals = table.concat( mappedTable, outputsep )
return newVals
--[[
local valTable = {)
for val in string.gmatch( vals, sepPattern ) do
for val in string.gmatch( vals, sepPattern ) do
-- replace varstr in map with val
-- replace varstr in map with val
Regel 36: Regel 49:
local newVals = table.concat( valTable, outputsep )
local newVals = table.concat( valTable, outputsep )
return newVals
return newVals
]]--
end
end


return p
return p

Versie van 5 sep 2023 19:31

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 32: attempt to call a table value

Or, using unnamed, sequential approach:

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

Luafout op regel 32: attempt to call a table value

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 32: attempt to call a table value

--[[
{{#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 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 ""
	--allow for spaces with \s
	local outputsep = string.gsub( outputsep, [[\s]], " " )
	
	local valTable = {}
	local valTable = mw.text.split( vals, sep )
	local mappedTable = {}
	for k,val in valTable do
		local val = mw.text.trim( val )
		local newVal = string.gsub( map, varstr, val )
		table.insert( mappedTable, newVal )
	end
	
	local newVals = table.concat( mappedTable, outputsep )
	return newVals
	
	--[[
	local valTable = {)
	for val in string.gmatch( vals, sepPattern ) do
		-- replace varstr in map with val
		local val = mw.text.trim( val )
		local newVal = string.gsub( map, varstr, val )
		table.insert( valTable, newVal )
	end
	local newVals = table.concat( valTable, outputsep )
	return newVals
	]]--
	
end

return p