Przejdź do zawartości

Moduł:Utwory

Z Wikiźródeł, wolnej biblioteki

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

function regal_code(frame)
	local argsp = frame.args
	local liczba_okl = tonumber(argsp['ilość'])
	local pierwsza, usun = tonumber(argsp['pierwsza']),tonumber(argsp['pierwsza'])
	local szerokosci = argsp['szerokości']
	local wysokosci = argsp['wysokości']
	local w= tonumber(argsp['w'])
	if w == nil or w == '' then w = '90%' end
	local mode= argsp['mode']
	if mode == nil or mode == '' then mode = 'packed-hover' end
	local na_wiersz = tonumber(argsp['na wiersz'])
	if na_wiersz == nil or na_wiersz == '' then na_wiersz = 0 end
	local lista = argsp['lista']
	local losowo = argsp['losowo']
	if szerokosci == nil or szerokosci == '' then szerokosci = '120px' end
	if wysokosci == nil or wysokosci == '' then wysokosci = '180px' end	
	local title_lista = mw.title.new( lista )
	local lista_content = title_lista:getContent()	
	lista_content = mw.text.trim(lista_content)
	local okladki = mw.text.split( lista_content, '\n' )
	if usun ~= nil then
		while usun > 0 do
			table.remove( okladki, 1 )
			usun=usun-1
		end
	end
	if liczba_okl == nil or liczba_okl == '' then liczba_okl = #okladki end
	if losowo == 'tak' then
			math.randomseed( os.time() )
		local nr_okl = #okladki
		for i = 1, liczba_okl do
			local j = math.random(i, nr_okl)
			okladki[i], okladki[j] = okladki[j], okladki[i]
		end
	end
	while liczba_okl < #okladki do table.remove( okladki ) end
	--
	local autor_link = {}
	local autor_opis = {}
	local autor_wpis = {}
	local tytul_link = {}
	local tytul_opis = {}
	local okladka_link = {}
	local okladka_str = {}
	local indeksowa = {}
	local indeksowa_content = {}
	--uf
	for nr_okl = 1, liczba_okl do
		tytul_link[nr_okl] = mw.ustring.match(okladki[nr_okl], '%[%[([^|%]]*)')
		tytul_opis[nr_okl] = mw.ustring.match(okladki[nr_okl], '([^|%[]*)%]%]')
		if tytul_opis[nr_okl] == nil then tytul_opis[nr_okl] = '' end
		if tytul_link[nr_okl] == nil then tytul_link[nr_okl] = '' end
		indeksowa[nr_okl] = mw.title.makeTitle( '', tytul_link[nr_okl] ) --todo poka-yoke
		indeksowa_content[nr_okl] = tostring(indeksowa[nr_okl]:getContent())
		local test_okladki = mw.ustring.match(indeksowa_content[nr_okl], '|[%s]-[Oo]kładka[%s]-=[%s]-.-|')
		if test_okladki == nil then  okladka_link[nr_okl] = '' else okladka_link[nr_okl] = mw.text.trim(mw.ustring.sub(test_okladki, mw.ustring.find( test_okladki, '=' ) + 1, -2) ) end
		local test_strony = mw.ustring.match(indeksowa_content[nr_okl], '|[%s]-[Ss]trona z okładką[%s]-=[%s]-.-|')
		if test_strony == nil then  okladka_str[nr_okl] = '' else  okladka_str[nr_okl] = '|page=' .. mw.text.trim(mw.ustring.sub(test_strony, mw.ustring.find( test_strony, '=' ) + 1, -2) ) end
		if okladka_str[nr_okl] == nil or okladka_str[nr_okl] == '|page=' then okladka_str[nr_okl] = '' end	
		local test_autor = mw.ustring.match(indeksowa_content[nr_okl], '|[%s]-[Aa]utor[%s]-=[%s]-.-\n[%s]-|')
		if test_autor == nil then  autor_wpis[nr_okl] = '' else autor_wpis[nr_okl] = mw.text.trim(mw.ustring.sub(test_autor, mw.ustring.find( test_autor, '=' ) + 1, -2) ) end
		if mw.ustring.find( autor_wpis[nr_okl], '[%[%],\|]' ) or autor_wpis[nr_okl] == '' then
			autor_link[nr_okl] = ''
			autor_opis[nr_okl] = ''
		else
			autor_link[nr_okl] = 'Autor:' .. autor_wpis[nr_okl]
			autor_opis[nr_okl] = autor_wpis[nr_okl]
		end

	end
	--/uf
	local galeria_code = '\n<gallery heights=' .. wysokosci .. ' widths=' .. szerokosci .. ' perrow=' .. na_wiersz .. ' style="font-size:' .. w ..'" mode="' .. mode ..'">\n'
	for nr_okl = 1, liczba_okl do
		galeria_code = galeria_code .. 'File:' .. okladka_link[nr_okl] ..  okladka_str[nr_okl] .. '|link=' .. tytul_link[nr_okl] .. '|' .. ((autor_link[nr_okl]=='') and autor_wpis[nr_okl] or ("'''[[" .. autor_link[nr_okl] .. '|' .. autor_opis[nr_okl] .. "]]'''")) .. "<br />[[" .. tytul_link[nr_okl] .. ((tytul_opis[nr_okl]=='') and '' or ('|' .. tytul_opis[nr_okl])) .. "]]<br />{{epub|" .. tytul_link[nr_okl] .. "|opis=nie}}''\n"
	end
	galeria_code = galeria_code .. '</gallery>\n'
	
	return frame:preprocess{ text = galeria_code }	
end


function nowe_code(frame)
	local argsp = frame.args
	local liczba_okl = tonumber(argsp['ilość'])
	local szerokosci = argsp['szerokości']
	local wysokosci = argsp['wysokości']
	if liczba_okl == nil or liczba_okl == '' then liczba_okl = 3 end
	if szerokosci == nil or szerokosci == '' then szerokosci = '140px' end
	if wysokosci == nil or wysokosci == '' then wysokosci = '200px' end	
	local szablon_nowe = mw.title.makeTitle( 'Template', 'Nowe' )
	local nowe_content = szablon_nowe:getContent()
	--nowe_content = mw.text.trim(string.gsub(string.gsub(nowe_content, '<%!%-%-[^\n]-%-%->\n', ''), '[%s\n]*%<noinclude%>.*', ''))
	--local okladki = mw.text.split( nowe_content, '\n' )
	local okladki = {}
	for pozycja in string.gmatch( nowe_content, '#(.-)\n' ) do
		table.insert( okladki, pozycja )
		if #okladki >= 20 then break end
	end

	math.randomseed( os.time() )
	local nr_okl = 20
	for i = 1, liczba_okl do
		local j = math.random(i, nr_okl)
		okladki[i], okladki[j] = okladki[j], okladki[i]
	end

	local autor_link = {}
	local autor_opis = {}
	local tytul_link = {}
	local tytul_opis = {}
	local okladka_link = {}
	local okladka_str = {}
	local indeksowa = {}
	local indeksowa_content = {}
	--uf
	for nr_okl = 1, liczba_okl do
		autor_link[nr_okl] = mw.ustring.match(okladki[nr_okl], 'Autor:[^|^%]]*')
		autor_opis[nr_okl] = mw.ustring.match(tostring(mw.ustring.match(okladki[nr_okl], 'Autor:[^%]]*')), '|[^%]]*')
		local bez_autora = tostring(mw.ustring.match(mw.ustring.gsub( okladki[nr_okl], '%[%[Autor:[^%]]*%]%]', ''), '%[%[[^%]]*%]%][^|^%]]*$'))
		tytul_link[nr_okl] = mw.ustring.sub(tostring(mw.ustring.match(bez_autora, '%[%[[^|^%]]*')), 3)
		tytul_opis[nr_okl] = mw.ustring.match(bez_autora, '|[^%]]*')
		if autor_link[nr_okl] == nil then
			autor_link[nr_okl] = ''
			autor_opis[nr_okl] = ''
		else 
			autor_link[nr_okl] = "'''[[" .. autor_link[nr_okl] 
			if autor_opis[nr_okl] == nil then
				autor_opis[nr_okl] = "]]'''," 
			else
				autor_opis[nr_okl] = autor_opis[nr_okl] .. "]]''',"
			end
		end
		if tytul_opis[nr_okl] == nil then tytul_opis[nr_okl] = '' end
		if tytul_link[nr_okl] == nil then tytul_link[nr_okl] = '' end
		indeksowa[nr_okl] = mw.title.makeTitle( '', tytul_link[nr_okl] )
		indeksowa_content[nr_okl] = tostring(indeksowa[nr_okl]:getContent())
		local test_okladki = mw.ustring.match(indeksowa_content[nr_okl], '|[%s]-okładka[%s]-=[%s]-.-|')
		if test_okladki == nil then  okladka_link[nr_okl] = '' else  okladka_link[nr_okl] = mw.text.trim(mw.ustring.sub(test_okladki, mw.ustring.find( test_okladki, '=' ) + 1, -2) ) end
		local test_strony = mw.ustring.match(indeksowa_content[nr_okl], '|[%s]-strona z okładką[%s]-=[%s]-.-|')
		if test_strony == nil then  okladka_str[nr_okl] = '' else  okladka_str[nr_okl] = '|page=' .. mw.text.trim(mw.ustring.sub(test_strony, mw.ustring.find( test_strony, '=' ) + 1, -2) ) end
		if okladka_str[nr_okl] == nil or okladka_str[nr_okl] == '|page=' then okladka_str[nr_okl] = '' end	
	end
	--/uf
	local galeria_code = '\n<gallery heights=' .. wysokosci .. ' widths=' .. szerokosci .. ' mode="packed-hover">\n'
	for nr_okl = 1, liczba_okl do
		galeria_code = galeria_code .. 'File:' .. okladka_link[nr_okl] ..  okladka_str[nr_okl] .. '|link=' .. tytul_link[nr_okl] .. '|' .. autor_link[nr_okl] .. autor_opis[nr_okl] .. "<br />[[" .. tytul_link[nr_okl] .. tytul_opis[nr_okl] .. "]]<br />{{epub|" .. tytul_link[nr_okl] .. "|opis=nie}}''\n"
	end
	galeria_code = galeria_code .. '</gallery>\n'
	
	return frame:preprocess{ text = galeria_code }
end

local p = {}

function p.nowe(frame)
	return nowe_code( frame:getParent() )
end

function p.regal(frame)
	return regal_code( frame:getParent() )
end
return p