文档图示 模块文档

使用方法

{{#invoke:政黨|fetch|<party>|<value>}}

更新模块

本模块中包含的政党根据名称的第一个字符分成按字母顺序排列的列表(例如,"Labour Party (UK)" 属于 /L)。/1 子页面用于任何不以西方字母 A-Z 开头的政党(包括数字和重音字符)。

每个数据子模块内有两个本地组:local alternatelocal full

备用党派名称

备用组(alternate group)用于党派的备用名称。以下是 Labour Party (UK) 的备用名称示例:

local alternate = {    ....["Labour and Co-operative"] = "Labour Party (UK)",["Labour Co-operative"] = "Labour Party (UK)",    ...}

方括号中的第一个条目是备用名称,第二个条目(仅在引号中)是 full 组中的名称,如下所示。请注意,政党的备用名称应存储在相应的基于字母的子页面中;"Alabama Democratic Party" 列在 /A 中,尽管它是 "Democratic Party (US)"(存储在 /D)的备用名称。

表中数值

local full = {    ....["Labour Party (UK)"] = {abbrev = "Lab", color = "#E4003B", shortname = "Labour",},    ...}

每个党都存储有三个值:

与党的主要名称不同,添加到这些参数中的值与本模块中其他党的值不必是唯一的。

如果某个党没有存储名称值,模块在返回输入之前会尝试返回另一个简短名称变量。因此,如果存储了缩写(abbrev),但没有存储简称(shortname),那么无论询问哪个值,模块都会返回缩写值(abbrev)。

數據頁

local p = {}local default_color = '&#35;F8F9FA'local categories = {party_not_in_list = '[[Category:Pages using Political party with unknown party]]',shortname_not_in_list = '[[Category:Pages using Political party with missing shortname]]',color_not_in_list = '[[Category:Pages using Political party with missing color]]',}local function create_error(error_message)return string.format('<strong class="error">%s</strong>', error_message)endlocal function getFirstLetter(party)local index = mw.ustring.sub(party, 1, 1)-- Set index for non-A-Z startsif string.match(index, '%A') thenreturn '1'endreturn string.upper(index)endlocal 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' thentext = text:match('(%S.-)%s*$')local delink = require('Module:Delink2')._delinktext = delink({text, wikilinks = "target"})endreturn textend-- 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] thenreturn create_error("parameter 1 should be a party name.")endif not args[2] thenreturn create_error("parameter 2 should be the output type.")end local party = stripToNil(args[1])local out_type = stripToNil(args[2])if out_type == 'colour' thenout_type = 'color'endlocal index = getFirstLetter(party)-- Load data from submodulelocal data = mw.loadData('Module:政黨/' .. index)local data_all = data.fulllocal party_alt = data.alternate[party]local party_infoif party_alt thenif data_all[party_alt] thenparty_info = data_all[party_alt]elseindex = getFirstLetter(party_alt)data = mw.loadData('Module:政黨/' .. index)party_info = data.full[party_alt]endelseparty_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->inputif not party_info thenif out_type == 'color' thenreturn args.error or default_colorelsereturn args.error or partyendendlocal return_value = party_info[out_type]if return_value == "" thenif out_type == 'color' thenreturn args.error or create_error("Value not in template. Please request that it be added.")elseif out_type == 'abbrev' thenif party_info.shortname ~= "" thenreturn party_info.shortnameelsereturn partyendelseif out_type == 'shortname' thenif party_info.abbrev ~= "" thenreturn party_info.abbrev elsereturn partyendelsereturn partyendendif out_type == 'color' and string.find(return_value, '#') thenreturn_value = string.gsub(return_value, '#', '&#35;')endreturn return_valueendfunction p.fetch(frame)-- Initialise and populate variableslocal getArgs = require("Module:Arguments").getArgslocal args = getArgs(frame)return p._fetch(args)endreturn p