Module:Manipulation formatage
Apparence
La documentation pour ce module peut être créée à Module:Manipulation formatage/doc
-- luacheck: globals mw
local p = {}
function p.italiqueSiNonPrecise( value, debugMode )
local result
if
( value:find( "''", nil, true )
and ( value:find( "%f[']''%f[^']" ) -- wikicode italique
or value:find( "%f[']'''''%f[^']" ) -- wikicode italique + gras
)
)
or ( value:find( '<', nil, true )
and ( value:find( '<[iI][> %t]' ) -- balise <i>
or value:find( '<[eE][mM][> %t]' ) -- balise <em>
)
)
then
result = value
if
-- détection de « Titre ''(film, 2020)'' » qui serait à remplacer par « ''Titre'' (film, 2020) »
value:find( "%f[']'' ?%b() ?''%f[^']" )
-- détection de « Foo'' et ''Bar », en faisant attention à ne pas matcher « ''Foo'' et ''Bar'' »
or value:find( "%f[']'' et ''%f[^']" ) and not value:gsub( "%f[']'' et ''%f[^']", "" ):find( "''", nil, true )
-- détection de « Foo ''et'' Bar »
or value:find( " ''et'' ", nil, true )
then
result = result .. '[[Catégorie:Italique à vérifier dans un paramètre de modèle]]'
end
-- détection de wikicodes de mise en italique non équilibrés (i.e. en nombre impair)
local nbWikicodesItalique = select( 2, result:gsub( "%f[']''%f[^']", "" ) )
local nbWikicodesItaliquePlusGras = select( 2, result:gsub( "%f[']'''''%f[^']", "" ) )
if ( nbWikicodesItalique + nbWikicodesItaliquePlusGras ) % 2 ~= 0 then
result = result .. '[[Kategori:Italik pou verifye nan paramèt modèl]]'
end
else
result = '<i>' .. value .. '</i>'
-- détection de « Foo]], [[Bar » ainsi que « Foo]] et [[Bar » (italiques *probablement* manquants)
if value:find( "]], [[", nil, true ) or value:find( "]] et [[", nil, true ) then
result = result .. '[[Kategori:Italik pou verifye nan yon paramèt modèl]]'
end
end
if debugMode then
return mw.text.nowiki( result )
else
return result
end
end
function p.retireItaliques( value, debugMode )
-- les closing tags ne sont pas censés contenir d'attributs,
-- mais le parseur MediaWiki est tolérant et les laisse passer
-- rappel : attention, gsub() retourne deux valeurs
local result = value
:gsub( "%f[']''%f[^']" , '' ) -- wikicode italique
:gsub( "%f[']'''''%f[^']" , "'''" ) -- wikicode italique + gras (on remplace par gras : ''')
:gsub( '</?[iI][ %t]*>' , '' ) -- balises <i> et </i>
:gsub( '</?[iI][ %t]+[^>]+>' , '' ) -- balises <i attributs> et </i attributs>
:gsub( '</?[eE][mM][ %t]*>' , '' ) -- balises <em> et </em>
:gsub( '</?[eE][mM][ %t]+[^>]+>', '' ) -- balises <em attributs> et </em attributs>
if debugMode then
return mw.text.nowiki( result )
else
return result
end
end
local function isDebug( frame )
local debugMode = false
if frame.args.debug and frame.args.debug ~= '' then
debugMode = ( require 'Module:Yesno' )( frame.args.debug )
end
return debugMode
end
function p.modeleItaliqueSiNonPrecise( frame )
local value = frame.args.value
local debugMode = isDebug( frame )
return p.italiqueSiNonPrecise( value, debugMode )
end
function p.modeleRetireItaliques( frame )
local value = frame.args.value
local debugMode = isDebug( frame )
return p.retireItaliques( value, debugMode )
end
return p