Difference between revisions of "Module:Citation"

From Betting Wiki
Jump to navigation Jump to search
m (184 revisions imported)
 
(15 intermediate revisions by 8 users not shown)
Line 1: Line 1:
require('Module:No globals')
+
error('This module is retained for historical and structural reasons; consider using [[Module:Citation/CS1]].')
 
 
local p = {}
 
 
-- articles in which traditional Chinese preceeds simplified Chinese
 
local t1st = {
 
["228 Incident"] = true,
 
["Chinese calendar"] = true,
 
["Lippo Centre, Hong Kong"] = true,
 
["Republic of China"] = true,
 
["Republic of China at the 1924 Summer Olympics"] = true,
 
["Taiwan"] = true,
 
["Taiwan (island)"] = true,
 
["Taiwan Province"] = true,
 
["Wei Boyang"] = true,
 
}
 
 
 
-- the labels for each part
 
local labels = {
 
["c"] = "Chinese",
 
["s"] = "simplified Chinese",
 
["t"] = "traditional Chinese",
 
["p"] = "pinyin",
 
["tp"] = "Tongyong Pinyin",
 
["w"] = "Wade–Giles",
 
["j"] = "Jyutping",
 
["cy"] = "Cantonese Yale",
 
["poj"] = "Pe̍h-ōe-jī",
 
["zhu"] = "Zhuyin Fuhao",
 
["l"] = "literally",
 
}
 
 
 
-- article titles for wikilinks for each part
 
local wlinks = {
 
["c"] = "Chinese language",
 
["s"] = "simplified Chinese characters",
 
["t"] = "traditional Chinese characters",
 
["p"] = "pinyin",
 
["tp"] = "Tongyong Pinyin",
 
["w"] = "Wade–Giles",
 
["j"] = "Jyutping",
 
["cy"] = "Yale romanization of Cantonese",
 
["poj"] = "Pe̍h-ōe-jī",
 
["zhu"] = "Bopomofo",
 
}
 
 
 
-- for those parts which are to be treated as languages their ISO code
 
local ISOlang = {
 
["c"] = "zh",
 
["t"] = "zh-Hant",
 
["s"] = "zh-Hans",
 
["p"] = "zh-Latn-pinyin",
 
["tp"] = "zh-Latn",
 
["w"] = "zh-Latn-wadegile",
 
["j"] = "yue-jyutping",
 
["cy"] = "yue",
 
["poj"] = "nan",
 
["zhu"] = "zh-Bopo",
 
}
 
 
 
local italic = {
 
["p"] = true,
 
["tp"] = true,
 
["w"] = true,
 
["j"] = true,
 
["cy"] = true,
 
["poj"] = true,
 
}
 
-- Categories for different kinds of Chinese text
 
local cats = {
 
["c"] = "[[Category:Articles containing Chinese-language text]]",
 
["s"] = "[[Category:Articles containing simplified Chinese-language text]]",
 
["t"] = "[[Category:Articles containing traditional Chinese-language text]]",
 
}
 
 
 
function p.Zh(frame)
 
-- load arguments module to simplify handling of args
 
local getArgs = require('Module:Arguments').getArgs
 
 
local args = getArgs(frame)
 
return p._Zh(args)
 
end
 
 
function p._Zh(args)
 
local uselinks = not (args["links"] == "no") -- whether to add links
 
local uselabels = not (args["labels"] == "no") -- whether to have labels
 
local capfirst = args["scase"] ~= nil
 
 
local t1 = false -- whether traditional Chinese characters go first
 
local j1 = false -- whether Cantonese Romanisations go first
 
local testChar
 
if (args["first"]) then
 
for testChar in mw.ustring.gmatch(args["first"], "%a+") do
 
if (testChar == "t") then
 
t1 = true
 
end
 
if (testChar == "j") then
 
j1 = true
 
end
 
end
 
end
 
if (t1 == false) then
 
local title = mw.title.getCurrentTitle()
 
t1 = t1st[title.text] == true
 
end
 
 
 
-- based on setting/preference specify order
 
local orderlist = {"c", "s", "t", "p", "tp", "w", "j", "cy", "poj", "zhu", "l"}
 
if (t1) then
 
orderlist[2] = "t"
 
orderlist[3] = "s"
 
end
 
if (j1) then
 
orderlist[4] = "j"
 
orderlist[5] = "cy"
 
orderlist[6] = "p"
 
orderlist[7] = "tp"
 
orderlist[8] = "w"
 
end
 
 
-- rename rules. Rules to change parameters and labels based on other parameters
 
if args["hp"] then
 
-- hp an alias for p ([hanyu] pinyin)
 
args["p"] = args["hp"]
 
end
 
if args["tp"] then
 
-- if also Tongyu pinyin use full name for Hanyu pinyin
 
labels["p"] = "Hanyu Pinyin"
 
end
 
 
if (args["s"] and args["s"] == args["t"]) then
 
-- Treat simplified + traditional as Chinese if they're the same
 
args["c"] = args["s"]
 
args["s"] = nil
 
args["t"] = nil
 
elseif (not (args["s"] and args["t"])) then
 
-- use short label if only one of simplified and traditional
 
labels["s"] = labels["c"]
 
labels["t"] = labels["c"]
 
end
 
 
 
local body = "" -- the output string
 
local params -- for creating HTML spans
 
local label -- the label, i.e. the bit preceeding the supplied text
 
local val -- the supplied text
 
 
-- go through all possible fields in loop, adding them to the output
 
for i, part in ipairs(orderlist) do
 
if (args[part]) then
 
-- build label
 
label = ""
 
if (uselabels) then
 
label = labels[part]
 
if (capfirst) then
 
label = mw.language.getContentLanguage():ucfirst(label)
 
capfirst = false
 
end
 
if (uselinks and part ~= "l") then
 
label = "[[" .. wlinks[part] .. "|" .. label .. "]]"
 
end
 
label = label .. ": "
 
end
 
-- build value
 
val = args[part]
 
if (cats[part]) then
 
-- if has associated category add it
 
val = cats[part] .. val
 
end
 
if (ISOlang[part]) then
 
-- add span for language if needed
 
params = {["lang"] = ISOlang[part], ["xml:lang"] = ISOlang[part]}
 
val = mw.text.tag({name="span",attrs=params, content=val})
 
elseif (part == "l") then
 
-- put literals in quotes
 
val = '"' .. val .. '"'
 
end
 
if (italic[part]) then
 
-- italicise
 
val = "''" .. val .. "''"
 
end
 
-- add both to body
 
body = body .. label .. val .. "; "
 
end
 
end
 
 
if (body > "") then -- check for empty string
 
return string.sub(body, 1, -3) -- chop off final semicolon and space
 
else --no named parameters; see if there's a first parameter, ignoring its name
 
if (args[1]) then
 
-- if there is treat it as Chinese
 
label = ""
 
if (uselabels) then
 
label = labels["c"]
 
if (uselinks) then
 
label = "[[" .. wlinks["c"] .. "|" .. label .. "]]"
 
end
 
label = label .. ": "
 
end
 
-- default to show links and labels as no options given
 
val = cats["c"] .. args[1]
 
params = {["lang"] = ISOlang["c"], ["xml:lang"] = ISOlang["c"]}
 
val = mw.text.tag({name="span",attrs=params, content=val})
 
return label .. val
 
end
 
return ""
 
end
 
end
 
 
 
return p
 

Latest revision as of 01:33, 10 September 2019

Documentation for this module may be created at Module:Citation/doc

error('This module is retained for historical and structural reasons; consider using [[Module:Citation/CS1]].')