Aller au contenu

Module:Citation bloc

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 24 mai 2018 à 10:09 et modifiée en dernier par Zebulon84 (discuter | contributions) (bug si liste est nil). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[voir] [modifier] [historique] [purger]

Module technique utilisé par {{Citation bloc}}.

local p = {}

function p.intercaleParagraphes(frame)

    -- il faudrait normalement utiliser mw.ustring.gsub(),
    -- mais dans ce cas précis gsub() convient aussi, et il est plus performant

    local source, count = frame.args.source
        :gsub('(%S) *\n *\n *\n *\n', '%1</p><p><br></p><p>')
        :gsub('(%S) *\n *\n *\n'    , '%1</p><p><br>')
        :gsub('(%S) *\n *\n'        , '%1</p><p>')

    return source
end

function p.intercaleParagraphesBaS(frame)
    local title = mw.title.getCurrentTitle()
    local source = frame.args.source
    local ref = frame.args.ref or ''
    local liste
    if frame.args.liste ~= '' then
    	liste = require 'Module:Yesno'(frame.args.liste)
    end
    
    if (title.isTalkPage or title.namespace == 2 or title.namespace == 4 or liste)
    	and not (liste == false)
    then
	    source = source
	        :gsub('\n([*#:;]+)'         , '<br>%1')
	        :gsub('(%S) *\n *\n *\n *\n', '%1</p><p><br></p><p>')
	        :gsub('(%S) *\n *\n *\n'    , '%1</p><p><br>')
	        :gsub('(%S) *\n *\n'        , '%1</p><p>')
	        :gsub('(%S) *\n'            , '%1 ')
		
		return '<p>« ' .. source .. ' »' .. ref .. '</p>'
    end
    return '\n« ' .. frame.args.source .. ' »' .. ref .. '\n'
end


return p