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]].')