Difference between revisions of "Module:Citation"

From blackwiki
Jump to navigation Jump to search
m (130 revisions imported)
 
(22 intermediate revisions by 12 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 12:02, 19 September 2020

Development of Lua support for both Citation Style 1 and Citation Style 2 began at Module:Citation. That development was abandoned in 2013 as development of Module:Citation/CS1 began.

Though this module remained unused, it is and has been the root page of the several module subpages that implement cs1 and cs2. The content of this module was replaced with an error message return as the result of a 2018 TfD.


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