Module:ko-attest
Appearance
- This module lacks a documentation subpage. Please create it.
- Useful links: subpage list • links • transclusions • testcases • sandbox
local export = {}
local us = mw.ustring
function export.ko_attest(frame)
local parent_args = frame:getParent().args
local args = require("Module:parameters").process(parent_args, {
[1] = {type = "language", required = true, default = "und"},
[2] = {},
["t"] = {},
["tr"] = {},
["alt"] = {},
["hapax"] = {type = "number"},
["h"] = {alias_of = "header"},
["header"] = {default = "first"},
["nocap"] = {type = "boolean"},
[3] = {alias_of = "work"},
["work"] = {},
["work_tr"] = {},
["quotes"] = {type = "boolean"},
[4] = {alias_of = "work_hanja"},
["work_hanja"] = {},
[5] = {alias_of = "year"},
["year"] = {},
["volume"] = {},
["page"] = {},
["url"] = {},
})
local headers = {
["first"] = "First [[attested]]",
["also"] = "Also [[attested]]",
["hangeul"] = "In the [[Hangeul]] script, first [[attested]]",
["hangul"] = "In the [[Hangeul]] script, first [[attested]]",
["none"] = "",
}
local header = headers[args["header"]]
if args["nocap"] then
header = us.lower(us.sub(header, 1, 1)) .. us.sub(header, 2, -1)
end
local hapaxes = {
[1] = "[[hapax legomenon]] ",
[2] = "[[dis legomenon]] ",
[3] = "[[tris legomenon]] ",
[4] = "[[tetrakis legomenon]] "
}
local hapax = (args["hapax"] and {hapaxes[args["hapax"]]} or {""})[1]
if hapax == nil then
error("hapax= must be unspecified or between 1 and 4, inclusive")
end
local attest
if args[2] == "-" then
attest = ""
else
if args[2] == "" then
require('Module:debug/track')("ko-attest/missing attested form")
end
attest = (header == "" and " " or " as ") .. args[1]:makeWikipediaLink() .. " " .. hapax .. require("Module:links").full_link({
term = args[2],
lang = args[1],
gloss = args["t"],
tr = args["tr"],
alt = args["alt"],
})
end
local attest_work = ""
if args["work"] then
if not args["year"] then
error("work= was supplied, so year= must be supplied")
end
local ko = require("Module:languages").getByCode("ko")
local work_tr
if args["work_tr"] then
work_tr = args["work_tr"]
else
work_tr = ko:transliterate(us.gsub(args["work"], "_", " "))
work_tr = us.upper(us.sub(work_tr, 1, 1)) .. us.sub(work_tr, 2, -1)
end
local work = us.gsub(args["work"], "_", "")
if args["work_hanja"] then
work = args["work_hanja"] .. " / " .. work
end
local work_tagged = require("Module:script utilities").tag_text(work, ko)
local position = ""
if args["volume"] and args["page"] then
position = " " .. args["volume"] .. ":" .. args["page"]
elseif args["volume"] then
position = " " .. args["volume"]
elseif args["page"] then
position = " " .. args["page"]
end
local link = ""
if args["url"] then
link = "<sup>[" .. args["url"] .. "]</sup>"
end
local delim_left = args["quotes"] and "“" or "''"
local delim_right = args["quotes"] and "”" or "''"
attest_work = " in the " .. delim_left .. work_tr .. delim_right .. " (" .. work_tagged .. ")" .. position .. link .. ", " .. args["year"]
else
require('Module:debug/track')("ko-attest/missing work")
end
return header .. attest .. attest_work
end
return export