Module:script utilities: Verskil tussen weergawes

Content deleted Content added
Pynappel (Besprekings | bydraes)
Nuwe bladsy geskep met 'local export = {} local m_data = mw.loadData("Module:script utilities/data") --[=[ Other modules used: Module:scripts Module:languages Module:parameters...'
 
Naudefj (Besprekings | bydraes)
No edit summary
 
Lyn 1:
local export = {}
 
local m_data = mw.loadData("Module:script utilities/data")
--[=[
Other modules Modules used:
[[Module:script utilities/data]]
[[Module:scripts]]
[[Module:languages]]
Lyn 12:
 
function export.is_Latin_script(sc)
-- Latn, Latf, Latinx, nv-Latn, pjt-Latn
return (sc:getCode():find("LatnLat")) orand sc:getCode()true ==or "Latinx"false
end
 
Line 41 ⟶ 42:
end
 
-- Ustring turns on the codepoint-aware string matching. The basic string function
local function trackChar(text, character, tracking)
-- should be used for simple sequences of characters, Ustring function for
if character and mw.ustring.find(text, character) then
-- sets – [].
local function trackChartrackPattern(text, characterpattern, tracking, ustring)
local find = ustring and mw.ustring.find or string.find
if characterpattern and mw.ustring.find(text, characterpattern) then
require("Module:debug").track("script/" .. tracking)
end
Line 51 ⟶ 56:
if lang and text then
local langCode = lang:getCode()
)
-- [[Special:WhatLinksHere/Template:tracking/script/ang/acute]]
if lang:getCode()langCode == "ang" then
local decomposed = mw.ustring.toNFD(text)
local acute = U(0x301)
trackChartrackPattern(decomposed, acute, "ang/acute")
end
--[=[
Line 66 ⟶ 72:
ϑ, ϰ, ϱ, ϕ should generally be replaced with θ, κ, ρ, φ.
]=]
ifelseif lang:getCode()langCode == "el" or lang:getCode()langCode == "grc" then
trackChartrackPattern(text, "ϑ", "Greek/wrong-theta")
trackChartrackPattern(text, "ϰ", "Greek/wrong-kappa")
trackChartrackPattern(text, "ϱ", "Greek/wrong-rho")
trackChartrackPattern(text, "ϕ", "Greek/wrong-phi")
end
--[=[
[[Special:WhatLinksHere/Template:tracking/script/Ancient Greek/spacing-coronis]]
[[Special:WhatLinksHere/Template:tracking/script/Ancient Greek/spacing-smooth-breathing]]
[[Special:WhatLinksHere/Template:tracking/script/Ancient Greek/wrong-apostrophe]]
When spacing coronis and spacing smooth breathing are used as apostrophes,
they should be replaced with right single quotation marks (’).
]=]
if lang:getCode()langCode == "grc" then
trackChar trackPattern(text, U(0x1FBD), "Ancient Greek/spacing-coronis")
trackChar trackPattern(text, U(0x1FBF), "Ancient Greek/spacing-smooth-breathing")
trackChar trackPattern(text, "[" .. U(0x1FBD) .. U(0x1FBF) .. "]", "Ancient Greek/wrong-apostrophe", true)
end
-- [[Special:WhatLinksHere/Template:tracking/script/Russian/grave-accent]]
ifelseif lang:getCode()langCode == "ru" then
local decomposed = mw.ustring.toNFD(text)
local grave = U(0x300)
trackChartrackPattern(decomposed, graveU(0x300), "Russian/grave-accent")
end
-- [[Special:WhatLinksHere/Template:tracking/script/Tibetan/trailing-punctuation]]
ifelseif lang:getCode()langCode == "bo" then
trackChartrackPattern(text, "[་།]$", "Tibetan/trailing-punctuation", true)
trackChartrackPattern(text, "[་།]%]%]$", "Tibetan/trailing-punctuation", true)
end
 
--[=[
Line 105 ⟶ 107:
[[Special:WhatLinksHere/Template:tracking/script/Thai/wrong-rue-lue]]
]=]
ifelseif lang:getCode()langCode == "th" then
trackChartrackPattern(text, "เ".."เ", "Thai/broken-ae")
trackChartrackPattern(text, "ํ[่้๊๋]?า", "Thai/broken-am", true)
trackChartrackPattern(text, "[ฤฦ]า", "Thai/wrong-rue-lue", true)
end
 
--[=[
Line 115 ⟶ 116:
[[Special:WhatLinksHere/Template:tracking/script/Lao/broken-am]]
]=]
ifelseif lang:getCode()langCode == "lo" then
trackChartrackPattern(text, "ເ".."ເ", "Lao/broken-ae")
trackChartrackPattern(text, "ໍ[່້໊໋]?າ", "Lao/broken-am", true)
end
end
Line 136 ⟶ 137:
replaced with line breaks. ]]
local escaped = {}
local gravei = U(0x300)0
local escape_format = "$%d"
local ifunction =escape(text, 1pattern, prefix)
return text:gsub(
for link_target in mw.ustring.gmatch(text, "%[%[([^|]+|)") do
pattern,
escaped[i] = link_target
function(item)
text = mw.ustring.gsub(text, link_target, "$" .. i)
i = i + 1
escaped[i] = link_targetitem
return (prefix or "") .. escape_format:format(i)
end)
end
fortext HTML_tag= in mw.ustring.gmatchescape(text, "<%[%[([^>|]+>"|)", do"[[")
text = escape(text, "<[^>]+>")
escaped[i] = HTML_tag
text = mw.ustring.gsub(text, HTML_tag, "$" .. i)
i = i + 1
end
text = mw.ustring.text:gsub(" +", "<br>")
text,
" +",
"<br>"
)
-- Unescape whatever was escaped.
text = mw.ustring.text:gsub(
text,
"$(%d)",
function(a)
Line 199 ⟶ 197:
end
local data = m_datamw.loadData("Module:script utilities/data").faces[face or "nil"]
if sc:getDirection() == "rtl" then
text = mw.ustring.gsub(text, "%p$", "%0&rlm;")
end
local post = ""
if facesc:getDirection() == "translationrtl" and sc:getDirection()face == "rtltranslation" or mw.ustring.find(text, "%p$")) then
post = "&lrm;"
end
Line 218 ⟶ 212:
end
 
function export.tag_translit(translit, lang, kind, attributes, is_manual)
if type(lang) == "table" then
lang = lang.getCode and lang:getCode()
Line 224 ⟶ 218:
end
local data = m_datamw.loadData("Module:script utilities/data").translit[kind or "default"]
local opening_tag = {}
Line 230 ⟶ 224:
table.insert(opening_tag, data.tag)
if lang == "ja" then
table.insert(opening_tag, 'class="' .. (data.classes and data.classes .. " " or "") .. (is_manual and "manual-tr " or "") .. 'tr"')
else
table.insert(opening_tag, 'lang="' .. lang .. '-Latn"')
table.insert(opening_tag, 'class="' .. (data.classes and data.classes .. " " or "") .. (is_manual and "manual-tr " or "") .. 'tr Latn"')
end
Line 243 ⟶ 237:
return "<" .. table.concat(opening_tag, " ") .. ">" .. translit .. "</" .. data.tag .. ">"
end
 
function export.tag_transcription(transcription, lang, kind, attributes)
if type(lang) == "table" then
lang = lang.getCode and lang:getCode()
or error("Third argument to tag_translit should be a language code or language object.")
end
local m_datadata = mw.loadData("Module:script utilities/data").transcription[kind or "default"]
local opening_tag = {}
table.insert(opening_tag, data.tag)
if sc:getDirection()lang == "rtlja" then
table.insert(opening_tag, 'class="' .. (data.classes and data.classes .. " " or "") .. 'ts"')
else
table.insert(opening_tag, 'lang="' .. lang .. '-Latn"')
table.insert(opening_tag, 'class="' .. (data.classes and data.classes .. " " or "") .. 'ts Latn"')
end
if data.dir then
table.insert(opening_tag, 'dir="' .. data.dir .. '"')
end
table.insert(opening_tag, attributes)
return "<" .. table.concat(opening_tag, " ") .. ">" .. transcription .. "</" .. data.tag .. ">"
end