Module:FirstLetter
From TANGOWIKI-TITAF
Documentation for this module may be created at Module:FirstLetter/doc
local p = {}
-- Normalize and clean up input
local function normalize(str)
str = mw.text.trim(str or "")
str = mw.ustring.upper(str)
str = mw.ustring.gsub(str, '[ÁÀÄÂ]', 'A')
str = mw.ustring.gsub(str, '[ÉÈËÊ]', 'E')
str = mw.ustring.gsub(str, '[ÍÌÏÎ]', 'I')
str = mw.ustring.gsub(str, '[ÓÒÖÔ]', 'O')
str = mw.ustring.gsub(str, '[ÚÙÜÛ]', 'U')
str = mw.ustring.gsub(str, '[Ñ]', 'N')
return str
end
-- Get first letter
function p.letter(frame)
local input = normalize(frame.args[1])
return mw.ustring.sub(input, 1, 1)
end
-- Get letter block
function p.block(frame)
local input = normalize(frame.args[1])
local first = mw.ustring.sub(input, 1, 1)
if first:match("[A-D]") then return "A–D" end
if first:match("[E-H]") then return "E–H" end
if first:match("[I-L]") then return "I–L" end
if first:match("[M-P]") then return "M–P" end
if first:match("[Q-T]") then return "Q–T" end
if first:match("[U-Z]") then return "U–Z" end
return "Other"
end
return p