Module:Alternative forms
local export = {}
local m_link = require('Module:links')
local m_languages = require("Module:languages")
local m_debug = require("Module:debug")
-- See if the language's dialectal data module has a label corresponding to the dialect argument.
function export.getLabel(dialect, dialect_data)
local data = dialect_data[dialect] or ( dialect_data.labels and dialect_data.labels[dialect] )
local alias_of = ( dialect_data.aliases and dialect_data.aliases[dialect] )
if not data then
if alias_of then
data = dialect_data[alias_of] or ( dialect_data.labels and dialect_data.labels[alias_of] )
end
end
if data then
local target = data.link
local display = data.display or dialect
dialect = target and ('[[w:'.. target ..'|'..display..']]') or display
end
return dialect
end
local function make_dialects(raw, lang)
local dialect_page = 'Module:'.. lang:getCode() ..':Dialects'
local dialect_info = mw.title.new(dialect_page).exists and mw.loadData(dialect_page) or false
local dialects = {}
for _, dialect in pairs(raw) do
table.insert(dialects, dialect_info and export.getLabel(dialect, dialect_info) or dialect)
end
return dialects
end
local function track(args, arg, number)
if args and args[arg] and args[arg][number] then
m_debug.track("alter/" .. arg)
end
end
function export.create(frame)
NAMESPACE = mw.title.getCurrentTitle().nsText
params = {
[1] = { required = true },
[2] = { required = true, list = true, allow_holes = true },
["alt"] = { list = true, allow_holes = true },
["id"] = { list = true, allow_holes = true },
["tr"] = { list = true, allow_holes = true },
["sc"] = {},
["g"] = { list = true, allow_holes = true },
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lang = ( args[1] and m_languages.getByCode(args[1]) ) or ( NAMESPACE == "Template" and m_languages.getByCode("und") ) or m_languages.err(args[1], 1)
local sc = require("Module:scripts").getByCode(args["sc"])
track(args, "dial") -- [[Special:WhatLinksHere/Template:tracking/alter/dial]]
local rawDialects = {}
local links = {}
local maxindex = math.max(args[2].maxindex, args.alt.maxindex, args.id.maxindex, args.tr.maxindex)
for i = 1, maxindex do
-- If the previous parameter was empty and we're not on the first parameter,
-- this parameter and any others contain dialect or other labels.
if i > 1 and not args[2][i - 1] then
rawDialects = {unpack(args[2], i, maxindex)}
break
-- If there's a term, link it and add it to the list.
elseif args[2][i] then
track(args, "alt", i) -- [[Special:WhatLinksHere/Template:Wt/sco/tracking/alter/alt]]
track(args, "id", i) -- [[Special:WhatLinksHere/Template:Wt/sco/tracking/alter/id]]
track(args, "tr", i) -- [[Special:WhatLinksHere/Template:Wt/sco/tracking/alter/tr]]
track(args, "sc", i) -- [[Special:WhatLinksHere/Template:Wt/sco/tracking/alter/sc]]
track(args, "g", i) -- [[Special:WhatLinksHere/Template:Wt/sco/tracking/alter/g]]
term = m_link.full_link{
lang = lang,
sc = sc,
term = args[2][i],
alt = args.alt[i],
id = args.id[i],
tr = args.tr[i],
genders = args.g[i]
}
table.insert(links, term)
end
end
local dialects = make_dialects(rawDialects, lang)
local output = { table.concat(links, ', ') }
if #dialects > 0 then
if lang:hasTranslit() then
dialect_label = " – ''" .. table.concat(dialects, ", ") .. "''"
else
dialect_label = " (''" .. table.concat(dialects, ", ") .. "'')"
end
-- Fixes the problem of '' being added to '' at the end of last dialect parameter
dialect_label = mw.ustring.gsub(dialect_label, "''''", "")
table.insert(output, dialect_label)
end
return table.concat(output)
end
function export.categorize(frame)
local content = {}
local title = mw.title.getCurrentTitle()
local titletext = title.text
local namespace = title.nsText
local subpagename = title.subpageText
-- subpagename ~= titletext if it is a documentation page
if namespace == "Module" and subpagename == titletext then
local langCode = mw.ustring.match(titletext, "^([^:]+):")
local lang = m_languages.getByCode(langCode) or error('"' .. langCode .. '" is not a valid language code.')
content.canonicalName = lang:getCanonicalName()
local categories =
[=[
[[Category:Wt/sco/<canonicalName> modules|dialects]]
[[Category:Wt/sco/Dialectal data modules|<canonicalName>]]
]=]
local function addContent(item)
return content[item]
end
categories = mw.ustring.gsub(categories, "<([^>]+)>", addContent)
return categories
end
end
return export
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.