Module:Image

local p = {}

function p.fetchPath(frame, image, thumb) local search_title if frame.args.image ~= nil then search_title = mw.text.decode(frame.args.image, true) else search_title = image end local thumb_size if frame.args.size ~= nil then thumb_size = frame.args.size else thumb_size = thumb end if (thumb_size ~= nil) and (string.match(thumb_size, '^%d+px$') == nil) then error('thumb_size value not valid', 1) end

local title = p.fetchFinalTitle(mw.title.makeTitle('Image', search_title)) if title == nil then return '' end --mw.log(title) local filename = title:partialUrl --mw.log(filename) local hash_path = p.calcHashPath(filename) --mw.log(md5) if thumb ~= nil then local encoded_filename = mw.uri.encode(filename, 'WIKI') return '/images/thumb/' .. hash_path .. '/' .. encoded_filename .. '/' .. thumb_size .. '-' .. encoded_filename; else return '/images/' .. hash_path .. '/' .. mw.uri.encode(filename, 'WIKI'); end end

function p.fetchURL(frame, image, thumb) return 'https://gbf.wiki' .. p.fetchPath(frame, image, thumb) end

function p.calcHashPath(filename) local md5 = mw.hash.hashValue('md5', filename) return string.sub(md5, 1, 1) .. '/' .. string.sub(md5, 1, 2) end

function p.fetchFinalTitle(title) if title == nil then return nil elseif title.redirectTarget == false then return title else return p.fetchFinalTitle(title.redirectTarget) end end

function p.test local frame = mw.getCurrentFrame mw.logObject(p.fetchURL(frame, 'EugenSummer_iconA.jpg', nil)) end

function p.test2 local frame = mw.getCurrentFrame mw.logObject(p.fetchURL(frame, 'EugenSummer_iconA.jpg', '2px')) end

function p.test3 local frame = mw.getCurrentFrame mw.logObject(p.fetchPath(frame, 'Minami_Nitta_iconA.jpg', '70px')) end

function p.test4 local frame = mw.getCurrentFrame frame.args.image = "Jeanne d&#39;Arc (Themed) iconA.jpg" mw.logObject(p.fetchURL(frame, nil, nil)) end

return p