Przejdź do zawartości

Moduł:Brudnopis/Wikipedysta:89.25.210.104/brudnopis

Z Wikipedii, wolnej encyklopedii
 Dokumentacja modułu [zobacz] [edytuj] [historia] [odśwież]

Użycie[edytuj kod]

Moduł:Brudnopis/Wikipedysta:89.25.210.104/brudnopis służy jako front-end do mw.text.listToText. Przyjmuje dowolną liczbę parametrów i łączy je przez | separator = (domyślnie ", "). Można podać opcjonalny | łącznik = (" oraz ") do określenia innego separatora przed ostatnią pozycją z listy parametrów. Początkowy parametr można podać przez | start = . Początkowe i końcowe znaki niedrukowalne są usuwane; jeśli | separator = powinien zawierać spacje, wstaw je za pomocą kodu HTML  . Moduł z założenia nie przekazuje żadnych błędów.

{{#invoke:Brudnopis/Wikipedysta:89.25.210.104/brudnopis|połącz|1|2|...|separator=...}}
-- Moduł łączy pozycje podane z parametrów przez opcjonalny 
-- separator. Ostatni separator może być podany niezależnie, 
-- umożliwiając listy w postaci "foo, bar, baz i qux". 
-- Można podać także początkowy parametr.

local p = {}

p['_połącz']=function(values,args)
	return mw.text.listToText(values, args.separator, args['łącznik'])
end

p._popraw=function(values,args)
	local str=require('Moduł:String')
	local strFrame={}
	local raw=''

	--pattern pusty
	if not values[2] then
		return ''
	end
	
	--local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} );
	strFrame.args={s=values[1], pattern=values[2], start=1, match=1, 
		plain=false, nomatch='' }
	raw=str.match(strFrame)
	
	--brak dopasowania
	if raw == nil then
		return ''
	end

	--local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ); 
	strFrame.args={source=raw, pattern=' ', replace='',
		count=nil, plain=true }
	raw=str.replace(strFrame)
	
	strFrame.args={source=raw, pattern=',', replace='.',
		count=nil, plain=true}
	return str.replace(strFrame)
end

p['_inflacja']=function(values,args)
	local kraj=values[1]
	if not kraj then
		return '<span style="font-size:100%" class="error">Moduł:brudnopis|inflacja: nie podano kodu kraju.</span>'
	end
	
	local dane=mw.loadData('Moduł:Brudnopis/Wikipedysta:89.25.210.104/brudnopis/dane/'..kraj)
	if (#mw.text.trim(dane.raw)<1) then
		return '<span style="font-size:100%" class="error">Moduł:brudnopis|inflacja: brak danych dla kraju '..kraj..'</span>'
	end

	--US
	--https://www.minneapolisfed.org/community/financial-and-economic-education/cpi-calculator-information/consumer-price-index-1800
	--tabela: Year | Annual Average | Annual Percent Change(rate of inflation)
	
	--UK
	--https://www.measuringworth.com/datasets/ukearncpi/
	--tabela: Year | Retail Price Index
	
	--DE (HICP)
	--https://www.destatis.de/EN/FactsFigures/NationalEconomyEnvironment/Prices/ConsumerPriceIndices/Tables_/HarmonizedConsumerPrices.html?cms_gtp=151292_slot%253D2
	--tabela: Year | Total index
	
	--usuń zbędne elementy
	local rUsun={US='%s\n[-]?%d*[.]?%d*%%\n?%s?'}
	local tmpStr=''
	
	if rUsun[kraj] then
		tmpStr=string.gsub(dane.raw, rUsun[kraj], '')
		--mw.log(mw.dumpObject(tmpStr))
		tmpStr=string.gsub(tmpStr, '%s\n', '')
	else
		tmpStr=dane.raw
	end
	--mw.log(mw.dumpObject(tmpStr))

	--podmiana elementów
	local rZamien={UK={co='NA', naco=1}, DE={co='%s%s+', naco=' '}}
	
	if rZamien[kraj] then
		tmpStr=string.gsub(tmpStr, rZamien[kraj].co, rZamien[kraj].naco)
		--mw.log(mw.dumpObject(tmpStr))
	end
	
	--kolejność
	if kraj == 'DE' then
		local tab=mw.text.split( tmpStr, '\n')
		table.sort(tab)
		tmpStr=table.concat(tab,'\n')
		mw.log(mw.dumpObject(tmpStr))
	end
	
	--przeformatowanie na switch z komentarzem o aktualizacji {{s|Inflacja/rok}}
	local switchStr='{{#switch:{{{1}}}<br/>'
		..string.gsub(tmpStr, '(%d*[.]?%d*)[\n%s](%d*[.]?%d*)\n?', '| %1 = %2<br/>')	--(%d*[.]?%d*)\n(%d*[.]?%d*)\n?
	switchStr=string.gsub(switchStr, '(= %d*[.]?%d*)<br/>$', '| #default %1')
		..'<br/>}}'..mw.getCurrentFrame():preprocess('<nowiki><!--</nowiki>')
		..' *** Po dodaniu lat pamiętaj o aktualizacji {{s|Inflacja/rok}}! ***<br/>-->'
	--mw.log(mw.dumpObject(switchStr))

	return switchStr
end

local function makeFunction(name)
	return function (frame)
		local args = require('Module:Brudnopis/Wikipedysta:89.25.210.104/Arguments')
			.getArgs(frame, {frameOnly = true})
		local values=require('Module:TableTools').compressSparseArray(args)
		return p[name](values,args)
	end
end

p['połącz'] = makeFunction('_połącz')
p.popraw = makeFunction('_popraw')
p.inflacja = makeFunction('_inflacja')

return p