Перейти к содержанию

Модуль:CategoryForProfession

Википедия сайттаҥ

Для документации этого модуля может быть создана страница Модуль:CategoryForProfession/doc

local p = {}

local ListOfProfessions = mw.loadData( 'Модуль:ListOfProfessions' )
local ListOfCountries = mw.loadData( 'Модуль:ListOfCountries' )

local ProfessionsCategoryByAlphabet = {}
for k, v in pairs(ListOfProfessions) do
	ProfessionsCategoryByAlphabet[k] = '[[Категория:Алфавит аайынча ' .. v .. ']]'
end

local ProfessionsCategoriesByCountry = {}
local QQQ = {}
for i, j in pairs(ListOfCountries) do
	QQQ = {}
	for k, v in pairs(ListOfProfessions) do
		QQQ[k] = '[[Категория:' .. v ..' ' .. j ..']]'
	end
	ProfessionsCategoriesByCountry[i] = QQQ
end

local function MakeGeneralCategories(professionsList, dict)
	local res = ''
	for i, prof in pairs(professionsList) do
		local cat=nil
		if(prof.mainsnak.datavalue) then -- если значение свойства "значение неизвестно", то datavalue nil
			id = 'Q' .. prof.mainsnak.datavalue.value['numeric-id']
			cat = dict[id];
		end
		if cat ~= nil then
			res = res .. cat;	
		end
	end
    return res
end

local function MakeCountriesCategories(countriesList, professionsList)
	local res = ''
	for i, cant in pairs(countriesList) do
		if cant.mainsnak.datavalue ~= nil then
			id = 'Q' .. cant.mainsnak.datavalue.value['numeric-id']
			local professionsCategories = ProfessionsCategoriesByCountry[id];
			if professionsCategories ~= nil then
				res = res .. MakeGeneralCategories(professionsList, professionsCategories);
			end
		end
	end
    return res
end

function p.mainFunction(frame)
	local result = ''
	local wbStatus, entity = pcall( mw.wikibase.getEntity )

	if wbResult ~= true then
		return '' -- [[Категория:Википедия:Страницы с ошибками скриптов, использующих Викиданные]]
	end

	if entity ~= nil and entity.claims ~= nil then
		if entity.claims[ 'P106' ] ~= nil then
			professions = entity.claims[ 'P106' ]
			result = result .. MakeGeneralCategories(professions, ProfessionsCategoryByAlphabet)
			if entity.claims[ 'P27' ] ~= nil then
				countries = entity.claims[ 'P27' ]
				result = result .. MakeCountriesCategories(countries, professions)
			end
		end
		local args = {}
		if frame == mw.getCurrentFrame() then
			if frame.args['без категорий'] == nil then
				frame = frame:getParent();
			end
			if frame ~= nil then
				args = frame.args;
			end
		else
			args = frame
		end
		-- исключаем ненужные категории указанные в параметре через точку с запятой
    	local excude = args['без категорий'];
    	if excude ~= nil and excude ~= '' then
    		exclude = mw.text.split(excude, '%s*;%s*' )
			for i, v in ipairs(exclude) do 
				local cat = mw.ustring.gsub( v, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ); -- маскируем спецсимволы
				result = mw.ustring.gsub(result, '%[%[Категория:' .. cat .. '%]%]', '');	
			end
    	end;
	end
	return result
end

return p
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy