Модуль:CategoryForProfession

Документация

Используется в шаблонах о персоналиях.

В 2015 году модуль был намеренно сломан (на подстранице Модуль:ListOfProfessions), поскольку ставил любые комбинации вида <профессия><страны>, что в общем случае неверно. Для включения модуля или его аналога для автоматически заполняемых карточек, следует обернуть все его влючения в условия отсутствия заполнения соответствующих полей карточки «род деятельности», «профессия» и аналогичных, а затем включить его обратно, причем не целиком, а только в части алфавитных категорий.

Функции

Используется только одна функция — mainFunction. Она добавляет в статью категории профессий по алфавиту, и профессий по странам. Сами профессии, гражданства и академические степени берёт на викиданных.

Для использования данного модуля напишите: {{#invoke:CategoryForProfession|mainFunction}}

Функции данного модуля не предназначены для прямого вызова из шаблонов карточек или других модулей.

В параметре без категорий= можно указать через точку с запятой перечень категорий которые нужно исключить.

См. также

local p = {}-- отключено в связи с тем, что модуль был намеренно сломан в 2015 году-- на подстранице 'Модуль:ListOfProfessions'--[===[local ListOfProfessions = mw.loadData( 'Модуль:ListOfProfessions' )local ListOfCountries = mw.loadData( 'Модуль:ListOfCountries' )local ProfessionsCategoryByAlphabet = {}for k, v in pairs(ListOfProfessions) doProfessionsCategoryByAlphabet[k] = '[[Категория:' .. v .. ' по алфавиту]]'endlocal ProfessionsCategoriesByCountry = {}local QQQ = {}for i, j in pairs(ListOfCountries) doQQQ = {}for k, v in pairs(ListOfProfessions) doQQQ[k] = '[[Категория:' .. v ..' ' .. j ..']]'endProfessionsCategoriesByCountry[i] = QQQend--]===]local function MakeGeneralCategories(professionsList, dict)local res = ''for i, prof in pairs(professionsList) dolocal cat=nilif(prof.mainsnak.datavalue) then -- если значение свойства "значение неизвестно", то datavalue nilid = 'Q' .. prof.mainsnak.datavalue.value['numeric-id']cat = dict[id];endif cat ~= nil thenres = res .. cat;endend    return resendlocal function MakeCountriesCategories(countriesList, professionsList)local res = ''for i, cant in pairs(countriesList) doif cant.mainsnak.datavalue ~= nil thenid = 'Q' .. cant.mainsnak.datavalue.value['numeric-id']local professionsCategories = ProfessionsCategoriesByCountry[id];if professionsCategories ~= nil thenres = res .. MakeGeneralCategories(professionsList, professionsCategories);endendend    return resendfunction p.mainFunction(frame)-- отключение модуля в связи с тем, что он был намеренно сломан в 2015 году-- на подстранице 'Модуль:ListOfProfessions'doreturn '' endlocal result = ''local wbStatus, entity = pcall( mw.wikibase.getEntity )if wbStatus ~= true thenreturn '' -- [[Категория:Википедия:Страницы с ошибками скриптов, использующих Викиданные]]endif entity ~= nil and entity.claims ~= nil thenif entity.claims[ 'P106' ] ~= nil thenprofessions = entity.claims[ 'P106' ]result = result .. MakeGeneralCategories(professions, ProfessionsCategoryByAlphabet)if entity.claims[ 'P27' ] ~= nil thencountries = entity.claims[ 'P27' ]result = result .. MakeCountriesCategories(countries, professions)endendlocal args = {}if frame == mw.getCurrentFrame() thenif frame.args['без категорий'] == nil thenframe = frame:getParent();endif frame ~= nil thenargs = frame.args;endelseargs = frameend-- исключаем ненужные категории указанные в параметре через точку с запятой    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;endreturn resultendreturn p