Mòideal:script utilities
Uses Lua: |
Related pages |
---|
(deasbaireachd⧼tpt-languages-separator⧽ ⧼tpt-languages-separator⧽eachdraidh⧼tpt-languages-separator⧽ceanglaichean⧼tpt-languages-separator⧽doc⧼tpt-languages-separator⧽bogsa-gainmhich⧼tpt-languages-separator⧽cùisean deuchainn)
This module is currently protected from editing. See the protection policy and protection log for more details. Please discuss any changes on the talk page; you may submit an edit request to ask an administrator to make an edit if it is uncontroversial or supported by consensus. You may also request that this page be unprotected. |
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
This module provides access to Mòideal:scripts from templates, so that they can make use of the information stored there. It also provides a number of functions that can be used by other modules.
Exported functions
tag_text
tag_text(text, lang, sc, face)
Wraps the given text in HTML tags with appropriate CSS classes (see WTCSS) for the language and script. This is required for all non-English text on Wiktionary.
The actual tags and CSS classes that are added are determined by the face
parameter. It can be one of the following:
"term"
- The text is wrapped in
<i class="(sc) mention" lang="(lang)">...</i>
. "head"
- The text is wrapped in
<strong class="(sc) headword" lang="(lang)">...</strong>
. "bold"
- The text is wrapped in
<b class="(sc)" lang="(lang)">...</b>
. nil
- The text is wrapped in
<span class="(sc)" lang="(lang)">...</span>
.
transliterate
transliterate(text, lang, sc)
Generates a transliteration (romanization) from the given text into Latin script, using the transliteration rules of the given language. This will use the module specified with the translit_module
setting for the language in Mòideal:languages. If no transliteration module is available, or if the transliteration fails in some other way, nil
is returned.
request_script
request_script(lang, sc)
Generates a request to provide a term in its native script, if it is missing. This is used by the {{Rfscript}}
template as well as by the functions in Mòideal:links.
The function will add entries to one of the subcategories of Roinn-seòrsa:Terms needing native script by language, and do several checks on the given language and script. In particular:
- If the script was given, a subcategory named "needing (script) script" is added, but only if the language has more than one script. Otherwise, the main "needing native script" category is used.
- Nothing is added at all if the language has no scripts other than Latin and its varieties.
template_rfscript
{{#invoke:script utilities|template_rfscript}}
This is used by {{rfscript}}
. See there for more information.
Faic cuideachd - Also see
- Mòideal:JSON data — for exporting all the script data at once
local export = {}
-- Implements [[Teamplaid:lang]]
function export.lang_t(frame)
local args = frame:getParent().args
NAMESPACE = mw.title.getCurrentTitle().nsText
local lang = args[1]; if lang == "" then lang = nil end
local text = args[2] or ""
local sc = args["sc"]; if sc == "" then sc = nil end
local face = args["face"]; if face == "" then face = nil end
lang = lang or (NAMESPACE == "Teamplaid" and "und") or error("Language code has not been specified. Please pass parameter 1 to the template.")
lang = require("Mòideal:languages").getByCode(lang) or error("The language code \"" .. lang .. "\" is not valid.")
sc = (sc and (require("Mòideal:scripts").getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")) or nil)
if not sc then
sc = require("Mòideal:scripts").findBestScript(text, lang)
end
return export.tag_text(text, lang, sc, face)
end
-- Wrap text in the appropriate HTML tags with language and script class.
function export.tag_text(text, lang, sc, face)
-- Add a script wrapper
if face == "term" then
return '<i class="' .. sc:getCode() .. ' mention" lang="' .. lang:getCode() .. '">' .. text .. '</i>'
elseif face == "head" then
return '<strong class="' .. sc:getCode() .. ' headword" lang="' .. lang:getCode() .. '">' .. text .. '</strong>'
elseif face == "bold" then
return '<b class="' .. sc:getCode() .. '" lang="' .. lang:getCode() .. '">' .. text .. '</b>'
elseif face == nil then
return '<span class="' .. sc:getCode() .. '" lang="' .. lang:getCode() .. '">' .. text .. '</span>'
else
error("Invalid script face \"" .. face .. "\".")
end
end
-- Add a notice to request the native script of a word
function export.request_script(lang, sc)
local scripts = lang:getScripts()
-- By default, request for "native" script
local cat_script = "native"
local disp_script = "script"
-- If the script was not specified, and the language has only one script, use that.
if not sc and #scripts == 1 then
sc = scripts[1]
end
-- Is the script known?
if sc then
-- If the script is Latin, return nothing.
if is_Latin_script(sc) then
return ""
end
if sc:getCode() ~= scripts[1]:getCode() then
disp_script = sc:getCanonicalName()
end
-- The category needs to be specific to script only if there is chance
-- of ambiguity. This occurs when lang=und, or when the language has
-- multiple scripts.
if lang:getCode() == "und" or scripts[2] then
cat_script = sc:getCanonicalName()
end
else
-- The script is not known.
-- Does the language have at least one non-Latin script in its list?
local has_nonlatin = false
for i, val in ipairs(scripts) do
if not is_Latin_script(val) then
has_nonlatin = true
break
end
end
-- If there are non-Latin scripts, return nothing.
if not has_nonlatin then
return ""
end
end
local category = ""
if mw.title.getCurrentTitle().nsText ~= "Teamplaid" then
category = "[[Roinn-seòrsa:" .. lang:getCanonicalName() .. " terms needing " .. cat_script .. " script]]"
end
return "<small>[" .. disp_script .. " needed]</small>" .. category
end
function export.template_rfscript(frame)
local args = frame.args
local lang = args[1] or error("The first parameter (language code) has not been given")
local sc = args["sc"]; if sc == "" then sc = nil end
lang = require("Mòideal:languages").getByCode(lang) or error("The language code \"" .. lang .. "\" is not valid.")
sc = (sc and (require("Mòideal:scripts").getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")) or nil)
local ret = export.request_script(lang, sc)
if ret == "" then
error("This language is written in the Latin alphabet. It does not need a native script.")
else
return ret
end
end
function is_Latin_script(sc)
return (sc:getCode():find("Latn", nil, true)) or sc:getCode() == "Latinx"
end
return export