Module:Version imprimable

Un livre de Wikilivres.
Aller à : navigation, rechercher
Lua-logo-nolabel.svg Documentation du module

Utilisé par {{imprimable}} pour réunir automatiquement toutes les pages d'un livre en une seule.

Si le livre est trop volumineux, il catégorise dans Catégorie:Pages contenant trop d'inclusions de modèles.
local p = {}

-- Cherche et renvoie le contenu des pages du sommaire placé en paramètre, pour créé une version imprimable du livre.
function p.affiche_livre(frame)
    local param = frame.args[1]
     if (param ~= nil and mw.text.trim(param) ~= '') then
        title = mw.title.new(param)
    else
        return 'Pas de sommaire trouvé'
    end
    text = title.getContent(title)
    local lines_ = mw.text.split(text, "\n")
    local lignes = {}
    for i,v in ipairs(lines_) do
		if string.sub(v, 1, 1) == "*" or string.sub(v, 1, 1) == "#" then
			-- Extrait les titres des pages
			chapter = mw.ustring.gsub(v, "[ \*\#\[<small>]*([^\|]*).*", "%1")
			--chapter = title.getContent(title)
			if (chapter ~= nil) then
				if (chapter ~= '' and mw.ustring.find(chapter, "{") == nil) then
					titre = mw.ustring.gsub(chapter, "[^/]*/*(.*)", "%1")
					if (titre ~= nil) then
						table.insert(lignes, frame:expandTemplate{title = "Nouvelle page imprimée"} .. '\n=' .. titre .. '=\n')
					end
					chapitre = mw.title.new(chapter)
					if (chapitre ~= nil and chapitre.exists) then
						table.insert(lignes, frame:expandTemplate{ title = ':' .. chapter } .. '\n\n')
					end
				end
			end
	    end
    end
 
 	debut = frame:expandTemplate{title = "Notice de version imprimable"} .. 
 		'\n' .. frame:expandTemplate{title = "Couverture de version imprimable"}
    fin = frame:expandTemplate{title = "GFDL"}
    local liste = debut .. table.concat(lignes, "\r\n") .. fin
    return liste
end
 
return p