La documentazione per questo modulo può essere creata in Modulo:Image/sandbox/man

local mWikibase = require('Modulo:Wikibase')
local default = "Pagebanner default.jpg"
local entityId = ''
local WDBanner = ''
local WDFoto = ''
local WDTitolo = ''

local function _isempty(s)
	return s == nil or s == ''
end

local function _getID(frame)
	entityId = frame.args[1] or frame.args.da or frame.args.from
	if _isempty(entityId) then
		entityId = mw.wikibase.getEntityIdForCurrentPage()
	end
end

local function _getWDTitle()
	WDTitolo = mw.wikibase.getLabel( entityId )
end

local function _getWDBanner()
	WDBanner = mw.wikibase.getBestStatements( entityId, 'P948')
	WDBanner = WDBanner[1] and WDBanner[1].mainsnak and WDBanner[1].mainsnak.datavalue and WDBanner[1].mainsnak.datavalue.value or nil
end

local function _getWDFoto()
	WDFoto = mw.wikibase.getBestStatements( entityId, 'P18')
	WDFoto = WDFoto[1] and WDFoto[1].mainsnak and WDFoto[1].mainsnak.datavalue and WDFoto[1].mainsnak.datavalue.value or nil
end

local function _fetchWD(frame)
	_getID(frame)
	_getWDBanner()
	_getWDFoto()
	_getWDTitle()
end

local function _getImage(frame)
	local foto = WDFoto
	local fotodesc = frame.args.fotodesc
	if _isempty(fotodesc) then
		fotodesc = frame.args.desc
		if _isempty(fotodesc) then
			fotodesc = (not _isempty(WDTitolo) and (WDTitolo..' ') or '').. '(immagine)'
		end
	end
	local fotopx = '100px'
	if not _isempty(frame.args.fotopx) then
		fotopx = frame.args.fotopx
	end

	return string.format('[[File:%s|%s|%s]]', foto, fotopx, fotodesc) 
end

local function _getBanner(frame)
	local banner = WDBanner or default
	local bannerdesc = frame.args.bannerdesc
	if _isempty(bannerdesc) then
		bannerdesc = frame.args.desc
		if _isempty(bannerdesc) then
			bannerdesc = (not _isempty(WDTitolo) and (WDTitolo..' ') or '').. '(banner)'
		end
	end
	local bannerpx = '300px'
	if not _isempty(frame.args.bannerpx) then
		bannerpx = frame.args.bannerpx
	end

	return string.format('[[File:%s|%s|%s]]', banner, bannerpx, bannerdesc) 
end

local p = {}

function p.getImage(frame)
	_getID(frame)
	_getWDFoto()
	_getWDTitle()
	return _getImage(frame)
end

function p.getBanner(frame)
	_getID(frame)
	_getWDBanner()
	_getWDTitle()
	return _getBanner(frame)
end

function p.getAllImages(frame)
	_fetchWD(frame)
	return p.getBanner(frame) .. p.getImage(frame)
end

function p.getBestImage(frame)
	_getID(frame)
	_getWDBanner()
	_getWDTitle()
	if WDBanner ~= nil then
		return _getBanner(frame)
	else
		_getWDFoto()
		if WDFoto ~= nil then
			return _getImage(frame)
		else
			return _getBanner(frame)
		end
	end
end

return p