Moduł:Liteman/Beau.bot-indeksy

Z Wikisłownika – wolnego słownika wielojęzycznego

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Liteman/Beau.bot-indeksy/opis

local p = {
	
main = function(frame)
	local content = mw.title.new('Wikisłownikarz:Beau.bot/indeksy/lista'):getContent()
	local lang = mw.language.new('pl')
	local indexes = {}
	
	for section in string.gfind(content, '{{Wikisłownikarz:Beau%.bot/indeksy/szablon.-}}') do
		local index_name = string.match(section, 'nazwa indeksu%s?=%s?([^\n]+)')
		
		local templates_list = string.match(section, 'szablony tematyczne%s?=%s?([^\n]+)')
		local templates = mw.ustring.gsub(templates_list, '%s?([^,]+)', ' '..frame:expandTemplate{title = 's', args = {'%1'}})
		
		local languages_list = string.match(section, 'szablony języków%s?=%s?([^\n]+)')
		local languages = {}
		
		for language in string.gfind(languages_list, '%s?([^,]+)') do
			local short_lang = lang:ucfirst(mw.ustring.gsub(language, 'język ', ''))
			languages[#languages+1] = '[[Indeks:'..short_lang..' - '..lang:ucfirst(index_name)..'|'..language..']]'
		end
		
		local categories_list = string.match(section, 'kategorie%s?=%s?([^\n]+)')
		local categories = {}
		
		if (categories_list) then
			for category in string.gfind(categories_list, '%s?([^,]+)') do
				categories[#categories+1] = '[[:Kategoria:'..category..'|'..category..']]'
			end
		end
		
		indexes[#indexes+1] = '* '..index_name..
			'\n** Szablony tematyczne: '..templates..
			'\n** Szablony języków: '..table.concat(languages, ', ')..
			(categories_list and '\n** Kategorie: '..table.concat(categories, ', ') or '')
	end
	
	return table.concat(indexes, '\n')
end
	
}

return p