45,647
edits
No edit summary |
No edit summary |
||
Line 60: | Line 60: | ||
(indicating a missing code). If `not_real_lang` is given, this check is suppressed. | (indicating a missing code). If `not_real_lang` is given, this check is suppressed. | ||
]=] | ]=] | ||
-- Temporarily convert various formatting characters to PUA to prevent them from being disrupted by the substitution process. | -- Temporarily convert various formatting characters to PUA to prevent them from being disrupted by the substitution process. | ||
Line 174: | Line 117: | ||
:gsub("\2", "%]%]") | :gsub("\2", "%]%]") | ||
return text | return text | ||
end | |||
-- If no script object is provided (or if it's invalid or None), get one. | |||
local function checkScript(text, self, sc) | |||
if not check_object("script", true, sc) or sc:getCode() == "None" then | |||
return self:findBestScript(text) | |||
else | |||
return sc | |||
end | |||
end | |||
--[==[Create the form used as as a basis for display text and transliteration.]==] | |||
local function processDisplayText(text, self, sc, keepCarets, keepPrefixes) | |||
local subbedChars = {} | |||
text, subbedChars = doTempSubstitutions(text, subbedChars, keepCarets) | |||
text = decode_uri(text, "PATH") | |||
text = checkNoEntities(self, text) | |||
sc = checkScript(text, self, sc) | |||
local fail, cats | |||
text = normalize(text, sc) | |||
text, fail, cats, subbedChars = iterateSectionSubstitutions(text, subbedChars, keepCarets, self, sc, self._rawData.display_text, "makeDisplayText") | |||
text = removeCarets(text, sc) | |||
-- Remove any interwiki link prefixes (unless they have been escaped or this has been disabled). | |||
if find(text, ":") and not keepPrefixes then | |||
local rep | |||
repeat | |||
text, rep = gsub(text, "\\\\(\\*:)", "\3%1") | |||
until rep == 0 | |||
text = gsub(text, "\\:", "\4") | |||
while true do | |||
local prefix = gsub(text, "^(.-):.+", function(m1) | |||
return gsub(m1, "\244[\128-\191]*", "") | |||
end) | |||
if not prefix or prefix == text then | |||
break | |||
end | |||
local lower_prefix = ulower(prefix) | |||
if not (self:loadData("Module:data/interwikis")[lower_prefix] or prefix == "") then | |||
break | |||
end | |||
text = gsub(text, "^(.-):(.*)", function(m1, m2) | |||
local ret = {} | |||
for subbedChar in gmatch(m1, "\244[\128-\191]*") do | |||
insert(ret, subbedChar) | |||
end | |||
return concat(ret) .. m2 | |||
end) | |||
end | |||
text = gsub(text, "\3", "\\") | |||
:gsub("\4", ":") | |||
end | |||
return text, fail, cats, subbedChars | |||
end | end | ||