Aller au contenu

Module:Formatage du titre

De Wreck
Version datée du 26 mars 2024 à 21:45 par Module:Formatage_du_titre>Od1n (simplification ; l'économie de ce require ne me semble pas justifier cet ajout de complexité, surtout que le présent module n'est généralement utilisé qu'une fois par page)

La documentation pour ce module peut être créée à Module:Formatage du titre/doc

local yesno = require( 'Module:Yesno' )

local p = {}

function p.formatTitle(frame)
    local args = frame.args
    local title
    if args.title then
        title = mw.title.new(args.title)
    else
        title = mw.title.getCurrentTitle()
    end

    -- Découpe le titre en trois parties :
    -- 1. prefix = espace de noms et éventuellement page mère (si c'est une sous-page)
    -- 2. mainPart = partie à mettre en forme (page ou sous-page, sans partie entre parenthèses)
    -- 3. disambig = partie entre parenthèses
    local prefix = ''
    if title.nsText ~= '' then
        prefix = title.nsText .. ':'
    end
    if title.isSubpage then
        prefix = prefix .. title.baseText .. '/'
    end

    local mainPart = title.subpageText

    local disambig = ''
    local disambigStart = mainPart:find(' %(.+%)$')
    if disambigStart then
        disambig = mainPart:sub(disambigStart)
        mainPart = mainPart:sub(1, disambigStart - 1)
    end

    -- Recollement des trois parties en insérant une balise de langue et l'italique si besoin.
    local lang = args.lang
    if lang and lang ~= '' then
        mainPart = '<span lang="' .. lang .. '">' .. mainPart .. '</span>'
    end
    local italic = args.italic
    if italic and italic ~= '' and yesno(italic) then
        mainPart = '<i>' .. mainPart .. '</i>'
    end
    return prefix .. mainPart .. disambig
end

--[[
Change le format de la partie principale d'un titre de page.
Les changements possibles sont la mise en italique et l'ajout d'une indication de langue.

Paramètres (passés via frame)
  lang : si non vide, insère une balise indiquant que la partie principale du titre est dans cette langue.
  italic : si non vide, met en italique la partie principale du titre.
  options : deuxième paramètre passé à DISPLAYTITLE. Les valeurs possibles sont "noreplace" et "noerror".
--]]
function p.setDisplayTitle(frame)
    local displayTitle = p.formatTitle(frame)
    if displayTitle == mw.title.getCurrentTitle().prefixedText then
        return ''
    end
    return mw.getCurrentFrame():callParserFunction('DISPLAYTITLE', displayTitle, frame.args.options)
end

return p