45,646
edits
No edit summary |
No edit summary |
||
Line 68: | Line 68: | ||
return sc | return sc | ||
end | 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 | ||