Moduł:Separuj

Z VatoWiki
Wersja z dnia 20:08, 13 maj 2021 autorstwa pl>MarMi wiki (lista)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Separuj/opis

-- Moduł separuje pozycje podane w parametrach przez opcjonalny 
-- separator. Ostatni separator może być podany niezależnie, 
-- umożliwiając listy w postaci "foo, bar, baz i qux". 

local p = {}

function p._separuj(values,args)
	-- Przekonwertuj (na Unikod) sekwencje HTML takie jak np. " " dla spacji.
	local separator = args.separator and mw.text.decode(args.separator)
	local lacznik = args['łącznik'] and mw.text.decode(args['łącznik'])
	local lista = args.lista
	local listaSeparator = args.listaSeparator or ';'
	local listaRegex="[^"..listaSeparator.."]+"

	if lista then
		values = {}
		
		for element in mw.ustring.gmatch(lista, listaRegex) do
			table.insert(values,element)
		end
		
	end

	return mw.text.listToText(values, separator, lacznik)
end

local function makeFunction(name)
	return function (frame)
		local args = require('Module:Arguments').getArgs(frame)	--{frameOnly = true}
		-- same wartości (tylko parametry nienazwane, nie przypisane przez "=")
		local values=require('Module:TableTools').compressSparseArray(args)
		return p[name](values,args)
	end
end

p.main = makeFunction('_separuj')

return p

--[[
local function makeInvokeFunction(separator, conjunction, first)
	return function (frame)
		local args = require('Module:Arguments').getArgs(frame)
		args.separator = separator or args.separator
		args.conjunction = conjunction or args.conjunction
		args.first = first or args.first
		return p._main(args)
	end
end

p.main = makeInvokeFunction()
p.br = makeInvokeFunction('<br />')
p.comma = makeInvokeFunction(mw.message.new('comma-separator'):plain())
]]