Модуль:Political party

![]() | Цей модуль позначений як К:реліз, готовий до загального вжитку (137). Він досягнув стадії готовності й вважається, що вільний від помилок і може використовуватись всюди, де знадобиться. Його можна вживати на допоміжних сторінках та інших сторінках Вікіпедії як можливість для навчання новачків. Аби зменшити навантаження на сервери та некоректний показ сторінок, його можна вдосконалювати в рамцях чернеткового тестування[en], а не з застосуванням спроб і помилок. |
![]() | Цей модуль залежить від наступних модулів: |
Використання
[ред. код]{{#invoke:Political party|fetch|<партія>|<значення>}}
Параметри
[ред. код]Параметр | Опис |
---|---|
1 | Назва політичної партії. Якщо партію не знайдено, то розмістіть запит на сторінці обговорення. |
2 | Запитуване значення. Зараз підтримуваними значеннями є скор (abbrev ), колір (color ) та коротка_назва (shortname ).
|
помилка (Псевдонім: error) |
Необов'язковий, цей параметр поверне передане значення |помилка= (|error= ), якщо модуль не містить запитувану партію чи колір.
|
Оновлення модуля
[ред. код]Політичні партії, що містяться в цьому модулі, розділені в абеткові списки, на основі першого символу назви (наприклад, «Лейбористська партія (Велика Британія)» буде в /Л). Підсторінка /1 для будь-якої партії, що не починається з А до Я кирилиці (включно з числами та діакритичними знаками).
Всередині кожного підмодуля даних є дві локальні групи: local alternate
та local full
.
Альтернативна назва партії
[ред. код]Група alternate є для альтернативних назв партії. Нижче наведено приклад альтернативних назв для Лейбористська партія (Велика Британія):
local alternate = {
....
["Лейбористська та кооперативна"] = "Лейбористська партія (Велика Британія)",
["Лейбористська кооперативна"] = "Лейбористська партія (Велика Британія)",
...
}
Перший значення у квадратних дужках є для альтернативної назви, а друге значення, що лише в лапках, є назвою, яка розташована в групі full
, див. нижче. Зверніть увагу, що альтернативна назва партії повинна бути розміщення у відповідній літерній підсторінці; «Алабамська демократична партія» буде розміщена в /А навіть попри те, що це альтернативна назва для «Демократична партія США» (що розміщена в /Д).
Табличні значення
[ред. код]local full = {
....
["Лейбористська партія (Велика Британія)"] = {abbrev = "Lab", color = "#E4003B", shortname = "Лейбористська",},
...
}
Є три значення, що зберігаються для кожної партії:
- Скорочення (
abbrev
). - Колір партії
color
), який може бути або трьома парами шістнадцяткових цифр або назвою базового кольору чи, якщо партія не має асоційованого кольору, «стандартним». - Коротка назва партії (
shortname
).
Значення, що додаються до цих параметрів, не потребують бути унікальними відносно інших партій в цьому модулі, на відміну від основної назви партії.
Якщо не міститься значення назви для партії, то модуль спробує повернути інший варіант «короткої» назви перед тим, як повертати вхідне значення. Тому, якщо міститься abbrev
, але не shortname
, то не залежно від значення, яке запитується, буде повернуто значення abbrev
.
Створення запиту на додавання чи зміну
[ред. код]Запит повинні робитися на сторінці обговорення в новому розділі. Скопіюйте рядок, що нижче, та заповніть лише поля, що стосуються партії. Назва партії є обов'язковим як і заповнення хоча б однієї іншої частини інформації. Див. вище щодо інформації стосовно кожного значення.
["партія"] = {abbrev = "", color = "", shortname = "",},
Повідомлення про помилки
[ред. код]Повідомлення про помилку | Вирішення |
---|---|
Помилка Lua: bad argument #1 to 'sub' (string expected, got table). | Запис призначений для розділу «local full» було розміщено в розділі «local alternate». Перемістіть його в розділ «local full» |
Помилка Lua у package.lua у рядку 80: module 'Module:Political party/' not found. | Партія додана до альтернативного списку з пустим значенням. |
Значення не в шаблоні. Будь ласка, подайте запит, щоб його додали. (пошук статей) | Запитувана партія має запис без кольору в розділі «local full». (Це може бути спричинено дубльованими записами в «local full», тому якщо вони наявні, то повинні бути об'єднанні.) |
(жодного повідомлення про помилку, але колір партії є білим/пустим) | Додайте колір для партій в її записі в розділі «local full» у відповідній літерній сторінці даних Модуль:Political party/ (див. посилання, що нижче). |
параметр 1 повинен бути назвою партії (пошук статей) | Шаблон намагається передати пропущений параметр до модуля. Щоб обійти це, то тестуйте роботу параметра в шаблоні. (приклад англ.вікі) |
параметр 2 повинен бути вихідним типом (пошук статей) |
Сторінки даних
[ред. код]- Political party/1
- Political party/А
- Political party/Б
- Political party/В
- Political party/Г
- Political party/Ґ
- Political party/Д
- Political party/Е
- Political party/Є
- Political party/Ж
- Political party/З
- Political party/И
- Political party/І
- Political party/Ї
- Political party/Й
- Political party/К
- Political party/Л
- Political party/М
- Political party/Н
- Political party/О
- Political party/П
- Political party/Р
- Political party/С
- Political party/Т
- Political party/У
- Political party/Ф
- Political party/Х
- Political party/Ц
- Political party/Ч
- Political party/Ш
- Political party/Щ
- Political party/Ю
- Political party/Я
Документація вище включена з Модуль:Political party/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля. Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки. |
local p = {}
local default_color = '#F8F9FA'
local categories = {
party_not_in_list = '[[Категорія:Сторінки, що використовують Political party з невідомою партією]]',
shortname_not_in_list = '[[Категорія:Сторінки, що використовують Political party з пропущеним shortname]]',
color_not_in_list = '[[Категорія:Сторінки, що використовують Political party з пропущеним кольором]]',
}
local function create_error(error_message)
return string.format('<strong class="error">%s</strong>', error_message)
end
local function getFirstLetter(party)
local unicode = require('Модуль:Unicode data')
local index = mw.ustring.sub(party, 1, 1)
-- Set index for non-A-Z starts
if not unicode.is_Cyrillic(index) then
return '1'
end
return mw.ustring.upper(index)
end
local function stripToNil(text)
-- If text is a string, return its trimmed content, or nil if empty.
-- Otherwise return text (which may, for example, be nil).
if type(text) == 'string' then
text = text:match('(%S.-)%s*$')
local delink = require('Module:Delink')._delink
text = delink({text, wikilinks = "target"})
end
return text
end
-- Example of having all the data - color and names - in one table. Requires one page to be edited instead of two when adding a new party.
function p._fetch(args)
if not args[1] then
return create_error("параметр 1 повинен бути назвою партії.")
end
if not args[2] then
return create_error("параметр 2 повинен бути вихідним типом.")
end
local party = stripToNil(args[1])
local out_type = stripToNil(args[2])
args.error = args.error or args['помилка']
if out_type == 'скор' then
out_type = 'abbrev'
elseif out_type == 'colour' or out_type == 'колір' then
out_type = 'color'
elseif out_type == 'коротка_назва' or out_type == 'коротканазва' or out_type == 'коротка назва' then
out_type = 'shortname'
end
local index = getFirstLetter(party)
if mw.ustring.sub(party, 1, 1) == index:ulower() then
local ucfirst = require('Модуль:String2').ucfirst
party = ucfirst({args={party}})
end
-- Load data from submodule
local data = mw.loadData('Module:Political party/' .. index)
local data_all = data.full
local party_alt = data.alternate[party]
local party_info
if party_alt then
if data_all[party_alt] then
party_info = data_all[party_alt]
else
index = getFirstLetter(party_alt)
data = mw.loadData('Module:Political party/' .. index)
party_info = data.full[party_alt]
end
else
party_info = data_all[party]
end
-- Check if database value exists
-- * Not even in database - return given error or input
-- * No color - return error
-- * No shortname/abbrev - return first non-blank of abbrev->shortname->input
if not party_info then
if out_type == 'color' then
return args.error or default_color
else
return args.error or party
end
end
local return_value = party_info[out_type]
if return_value == "" then
if out_type == 'color' then
return args.error or create_error("Значення не в шаблоні. Будь ласка, подайте запит, щоб його додали.")
elseif out_type == 'abbrev' then
if party_info.shortname ~= "" then
return party_info.shortname
else
return party
end
elseif out_type == 'shortname' then
if party_info.abbrev ~= "" then
return party_info.abbrev
else
return party
end
else
return party
end
end
if out_type == 'color' and string.find(return_value, '#') then
return_value = string.gsub(return_value, '#', '#')
end
return return_value
end
function p.fetch(frame)
-- Initialise and populate variables
local getArgs = require("Module:Arguments").getArgs
local args = getArgs(frame)
return p._fetch(args)
end
return p