Module:FirstLetter: Difference between revisions

From TANGOWIKI-TITAF
Created page with "local p = {} function p.from(frame) local input = frame.args[1] or '' -- Remove leading/trailing spaces input = mw.text.trim(input) -- Remove accents for basic comparison (optional) input = mw.ustring.gsub(input, '[ÁÀÄÂ]', 'A') input = mw.ustring.gsub(input, '[ÉÈËÊ]', 'E') input = mw.ustring.gsub(input, '[ÍÌÏÎ]', 'I') input = mw.ustring.gsub(input, '[ÓÒÖÔ]', 'O') input = mw.ustring.gsub(input, '[ÚÙÜÛ]', 'U') in..."
 
No edit summary
Line 3: Line 3:
function p.from(frame)
function p.from(frame)
     local input = frame.args[1] or ''
     local input = frame.args[1] or ''
    -- Remove leading/trailing spaces
     input = mw.text.trim(input)
     input = mw.text.trim(input)
     -- Remove accents for basic comparison (optional)
 
     -- Normalize accents
     input = mw.ustring.gsub(input, '[ÁÀÄÂ]', 'A')
     input = mw.ustring.gsub(input, '[ÁÀÄÂ]', 'A')
     input = mw.ustring.gsub(input, '[ÉÈËÊ]', 'E')
     input = mw.ustring.gsub(input, '[ÉÈËÊ]', 'E')
Line 12: Line 12:
     input = mw.ustring.gsub(input, '[ÚÙÜÛ]', 'U')
     input = mw.ustring.gsub(input, '[ÚÙÜÛ]', 'U')
     input = mw.ustring.gsub(input, '[Ñ]', 'N')
     input = mw.ustring.gsub(input, '[Ñ]', 'N')
    -- Uppercase first character
 
     local first = mw.ustring.upper(mw.ustring.sub(input, 1, 1))
     local first = mw.ustring.upper(mw.ustring.sub(input, 1, 1))
     return first
 
     if mw.ustring.find("ABCD", first) then return "A–D" end
    if mw.ustring.find("EFGH", first) then return "E–H" end
    if mw.ustring.find("IJKL", first) then return "I–L" end
    if mw.ustring.find("MNOP", first) then return "M–P" end
    if mw.ustring.find("QRST", first) then return "Q–T" end
    if mw.ustring.find("UVWXYZ", first) then return "U–Z" end
 
    return "Other"
end
end


return p
return p

Revision as of 07:48, 12 May 2025

Documentation for this module may be created at Module:FirstLetter/doc

local p = {}

function p.from(frame)
    local input = frame.args[1] or ''
    input = mw.text.trim(input)

    -- Normalize accents
    input = mw.ustring.gsub(input, '[ÁÀÄÂ]', 'A')
    input = mw.ustring.gsub(input, '[ÉÈËÊ]', 'E')
    input = mw.ustring.gsub(input, '[ÍÌÏÎ]', 'I')
    input = mw.ustring.gsub(input, '[ÓÒÖÔ]', 'O')
    input = mw.ustring.gsub(input, '[ÚÙÜÛ]', 'U')
    input = mw.ustring.gsub(input, '[Ñ]', 'N')

    local first = mw.ustring.upper(mw.ustring.sub(input, 1, 1))

    if mw.ustring.find("ABCD", first) then return "A–D" end
    if mw.ustring.find("EFGH", first) then return "E–H" end
    if mw.ustring.find("IJKL", first) then return "I–L" end
    if mw.ustring.find("MNOP", first) then return "M–P" end
    if mw.ustring.find("QRST", first) then return "Q–T" end
    if mw.ustring.find("UVWXYZ", first) then return "U–Z" end

    return "Other"
end

return p