Module:Usex/temlates

Revision as of 22:25, 6 August 2020 by 37.170.102.247 (talk) (Created page with "local export = {} local m_languages = require("Module:languages") local rsplit = mw.text.split local rfind = mw.ustring.find function export.usex_t(frame) local params = {...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

local export = {}

local m_languages = require("Module:languages") local rsplit = mw.text.split local rfind = mw.ustring.find

function export.usex_t(frame) local params = { [1] = {required = true}, [2] = {}, [3] = {},

["inline"] = {type = "boolean"}, ["noenum"] = {type = "boolean"}, ["ref"] = {}, ["lit"] = {}, ["q"] = {list = true}, ["sc"] = {}, ["source"] = {}, ["footer"] = {}, ["subst"] = {}, ["t"] = {alias_of = 3}, ["translation"] = {alias_of = 3}, ["tr"] = {}, ["transliteration"] = {alias_of = "tr"}, ["nocat"] = {type = "boolean"}, ["brackets"] = {type = "boolean"}, ["sort"] = {}, }

local quote = (frame.args["quote"] or "") ~= "" local compat = (frame.args["compat"] or "") ~= "" local template_inline = (frame.args["inline"] or "") ~= ""

if compat then params["lang"] = {required = true} params["t"].alias_of = 2 params["translation"].alias_of = 2 table.remove(params, 1) end

local args = require("Module:parameters").process(frame:getParent().args, params)

local lang = args[compat and "lang" or 1] or "und" local sc = args["sc"]

lang = m_languages.getByCode(lang) or m_languages.err(lang, ( compat and "lang" ) or 1) sc = (sc and (require("Module:scripts").getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")) or nil)

local usex = args[compat and 1 or 2] local translation = args[compat and 2 or 3] local transliteration = args["tr"] local noenum = args["noenum"] local inline = args["inline"] or template_inline local ref = args["ref"] local lit = args["lit"] local substs = args["subst"] local qualifiers = args["q"] local source = args["source"] local footer = args["footer"] local nocat = args["nocat"] local brackets = args["brackets"] local sortkey = args["sort"]

return require("Module:usex").format_usex(lang, sc, usex, translation, transliteration, noenum, inline, ref, quote, lit, substs, qualifiers, source, nocat, brackets, footer, sortkey) end

-- Given a comma-separated list of language codes, return the English equivalent. function export.format_langs(frame) local langcodes = rsplit(frame.args[1], ",") local langnames = {} for _, langcode in ipairs(langcodes) do local lang = m_languages.getByCode(langcode) or m_languages.err(langcode, 1) table.insert(langnames, lang:getCanonicalName()) end if #langnames == 1 then return langnames[1] elseif #langnames == 2 then return langnames[1] .. " and " .. langnames[2] else local retval = {} for i, langname in ipairs(langnames) do table.insert(retval, langname) if i <= #langnames - 2 then table.insert(retval, ", ") elseif i == #langnames - 1 then table.insert(retval, ", and ") end end return table.concat(retval, "") end end

-- Given a comma-separated list of language codes, return the first one. function export.first_lang(frame) local langcodes = rsplit(frame.args[1], ",") return langcodes[1] end

local ignore_prefixes = {"User:", "Talk:", "Wiktionary:Beer parlour", "Wiktionary:Translation requests", "Wiktionary:Grease pit", "Wiktionary:Etymology scriptorium", "Wiktionary:Information desk", "Wiktionary:Tea room", "Wiktionary:Requests for", "Wiktionary:Votes" }

function export.page_should_be_ignored(page) -- Ignore user pages, talk pages and certain Wiktionary pages for _, ip in ipairs(ignore_prefixes) do if rfind(page, "^" .. ip) then return true end end if rfind(page, " talk:") then return true end return false end

function export.page_should_be_ignored_t(frame) return export.page_should_be_ignored(frame.args[1]) and "true" or "" end

return export