Śródziemie Wiki
Advertisement

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

--<source lang="lua">
--=IESW.main({args={'Test','Test',s='Test'}})
IESW={}

local data=mw.loadData('Module:IESW/data')
local title3=tostring(mw.title.getCurrentTitle())
local title2=mw.title.new(mw.title.getCurrentTitle().text)
local title=mw.title.getCurrentTitle()

function IESW.main(frame)
	local infobox=mw.html.create('infobox')
	local group=mw.html.create('group')
	local name=mw.html.create('title')
	local default=mw.html.create('default')
	local navigation=mw.html.create('navigation')
	local nav=mw.html.create('navigation')
	local mapa=mw.html.create('group')
	local sound=mw.html.create('navigation')
	local links=mw.html.create('div')
	local e,gr,ob,ma,t,c,v,w='','','','','','','',''
	local y,o,g,h,z,u,l,m={},{},{},{},{},{},{},{}

	mapa:tag('header'):wikitext('Mapa')

	for i,x in pairs(frame.args) do
		u=mw.text.split(i,':')
		o[tonumber(u[1])]=i
		g[tonumber(u[1])]=x
		for j=1, #w do
			w[j]=mw.text.trim(w[j])
		end
	end

	for i,_ in ipairs(g) do
		h=y
		y=mw.text.split(o[i],':')
		m[i]={'',''}
		m[i]=mw.text.split(g[i],'%~')
		l[i]={'',''}
		l[i]=mw.text.split(m[i][1],'@%^')
		g[i]=l[i][1]

		if h[3] ~= y[3] and is(y[3]) then
			group:tag('header'):wikitext(y[3])

			if not is(y[4]) then y[4]='' end
			group:attr('collapse',y[4])

			if is(y[6]) then
				group:attr('layout',y[6])
			end

			if is(y[7]) then
				group:attr('show',y[7])
			end
		end

		if is(g[i]) then
			if y[2] == 'Ikona' then
				if mw.ustring.lower(g[i]) == 'tak' then
					default:wikitext('<div class="pi-icon">[[Plik:Star.png|32px|right]]</div>')
				else
					default:wikitext('<div class="pi-icon">[[Plik:'..g[i]..'|32px|right]]</div>')
				end
			elseif y[2] == 'Nazwa' then
				name:attr('source',y[2])
				default:wikitext('<div class="pi-title-icon">'..g[i]..'</div>')
			elseif y[2] == 'Podtytuł' then
				default:wikitext('<div class="pi-subtitle">'..g[i]..'</div>')
			elseif y[2] == 'Nawigacja' then
				navi='<div class="pi-change">{{#vardefine:s|0}}{{#arraydefine:!!|{{#loop:p|0|8|{{#explode:{{#arraydefine:##|'..g[i]..'}}{{#arrayprint:##|$,|^^|^^}}|$|{{#var:p}}}}}}}}{{#arrayprint:!!|&nbsp;&bull;&nbsp;|§|<span class="changebox ESWhover" id="switch{{#var:s}}{{#vardefine:s|{{#expr:{{#var:s}}+1}}}}">§</span>}}</div>'
				navigation:wikitext(navi):done()
			elseif y[2] == 'Plik' then
				file=mw.html.create('image')
				file
					:attr('source',y[2])
					:tag('default')
					:wikitext(IESWFile(g[i]:gsub('Plik:',''),'',w[j]))
			elseif y[2] == 'Podpis pliku' and is(file) then
				file
					:tag('alt')
					:attr('source',y[2])
					:wikitext('<default>'..g[i]..'</default>')
				file
					:tag('caption')
					:attr('source',y[2])
					:wikitext('<default>'..g[i]..'</default>')
			elseif y[2] == 'Mapa' then
				map=mw.html.create('image')
				map
					:attr('source',y[2])
					:tag('default')
					:wikitext(IESWFile(g[i]:gsub('Plik:',''),'_(mapa)',w[j]))
			elseif y[2] == 'Podpis mapy' and is(map) then
				map
					:tag('alt')
					:attr('source',y[2])
					:wikitext('<default>'..g[i]..'</default>')
				map
					:tag('caption')
					:attr('source',y[2])
					:wikitext('<default>'..g[i]..'</default>')
			elseif y[2] == 'nav' then
				group:tag('navigation'):wikitext(g[i]):done()
			elseif y[2] == 'link' then
				group:tag('navigation'):wikitext('['..g[i]..' Oficjalna strona internetowa]'):done()
			elseif y[2] == 'szablon' then
				t=g[i]
			elseif y[2] == 'motyw' then
				infobox:attr('theme',g[i]:gsub('%[+(.-)%]+','%1'))
			else
--56:Szczęście:Atrybuty:closed:l:horizontal:incomplete:cat:unique:sort:sep:none
--(frame.args.s,frame.args[1],frame.args[2],frame.args.u,frame.args.sort,frame.args.r,frame.args.cat,frame.args.none)
				group:wikitext('<data source="'..y[2]..'"><label>'..y[2]..'</label><default>'..IESWCore(y[5],g[i],y[2],y[9],y[10],y[11],y[8],y[12],y[3],w)..'</default></data>')
			end
		elseif is(y[13]) then
			group:wikitext('<data source="'..y[2]..'"><label>'..y[2]..'</label></data>')
		else
			if y[2] == 'Ikona' then
			elseif y[2] == 'Nazwa' then
				name:attr('source',y[2])
				default:wikitext('<div class="pi-title-icon">'..title2.fullText:gsub('%b()','')..'</div>')
			elseif y[2] == 'Podtytuł' then
			elseif y[2] == 'Plik' then
				navigation:wikitext(IESWCaption('',w[j])):done()
			elseif y[2] == 'Mapa' then
				navigation:wikitext(IESWCaption('m',w[j])):done()
			else
				if is(l[i][2]) then
					group:wikitext('<data source="'..y[2]..'"><label>'..y[2]..'</label><default>'..l[i][2]..'</default></data>')
				elseif is(m[i][2]) then
					group:wikitext('<data source="'..y[2]..'"><label>'..y[2]..'</label><default>'..m[i][2]..'</default></data>')
				end
			end
		end

		z=mw.text.split(tostring(o[i+1]),':')

		if z[3] ~= y[3] and is(z[3]) then
			gr=gr..tostring(group)
			group=mw.html.create('group')
		end

	end

	gr=gr..tostring(group)

	name:node(default)
	mapa:node(map)
	infobox
		:node(name)
		:node(navigation)
		:node(file)
		:node(mapa)
		:wikitext(gr)

	e='{{#vardefine:a|{{#expr:{{#var:a}}+1}}}}{{#ifexpr:{{#var:a}}=1|{{#vardefine:l|0}}}}<div class="changebox" id="switch{{#var:l}}{{#vardefine:l|{{#expr:{{#var:l}}+1}}}}">'..e..tostring(infobox)..'</div>'
	return mw.getCurrentFrame():preprocess(e)
end

function IESWLine(v1,v2,v3)
	local success, result = pcall(function() return data['forms'][data[v1][mw.ustring.lower(v2)]][v3] end)
	return success and result or data["#default"] or v2
end

--(frame.args.s,frame.args[1],frame.args[2],frame.args.u,frame.args.sort,frame.args.r,frame.args.cat,frame.args.none)
function IESWCore(v1,v2,v3,v4,v5,v6,v7,v8,v9,wys)
	local value,l,s,w='','','',''
	local z,r,h={},{},{}
	if is(v2) then
		if is(v3) then
			w=v3
		else
			w=v9
		end

		s=v1
		v=mw.text.split(v2--[[:gsub('%[+(.-)%]+','%1')]]:gsub('<br>',','):gsub('\n',','),v6 or ',')

		for _,z in ipairs(v) do
			z=z
--				:gsub('.*:','')
				:gsub('~%(+(.-)%)+','<%1>')
--:gsub('%b()','')
:gsub(';',','):gsub('%$',';')
			z=mw.text.trim(z):gsub('%<+(.-)%>+','(%1)')

			if not is(v4) then
				if not h[z] then
					r[#r+1]=z
					h[z]=true
				end
			else
				r=v
			end
		end

		if not is(v5) then
			table.sort(r)
		end

		for i=1, #r do
			l=r[i]
			if is(l) then
				if s == "i" then
						l='[[Plik:'..l..'|16px]]'
					elseif s == "k" then
						l='<div style="background:rgb('..l..')" class="pi-boxcolor"></div>'
					elseif s == "s" then
						l='[['..w..'::'..l..'|'..l:gsub('Zadanie:','')..']]'
					elseif s == "l" then
						l='[['..l..'|'..l:gsub('Zadanie:','')..']]'
					elseif s == "b" then
						l=l
					else
						l='[['..w..'::'..l..'|'..l:gsub('Zadanie:','')..']]'
				end

				value=value..'<div>'..l..'</div>'
			end
		end

		if is(v8) then
			value=''
		else
			value=mw.getCurrentFrame():preprocess(value)
		end
	end
		return value
end

function IESWCaption(v1,w)
	local v,m,c='','',''
	if is(v1) then
		v2='_(mapa)'
		m='map'
	else
		v2=''
		m='grafik'
	end

	v=v..'<div>Artykuł nie posiada '..m..'? <span class="plainlinks">['..tostring(mw.uri.fullUrl('Specjalna:Prześlij'))..' Dodaj je!]</span></div>'

	return v
end

function IESWFile(v1,v2,w)
	local v=''
	if not is(v2) then v2='' end

	if is(v1) then
		v=v..'[[Plik:'..v1..']]'
	end

	return v

end

function is(v)
	if v ~= '' and v ~= nil then
		return true
	else
		return false
	end
end

return IESW
--</source>
Advertisement