Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:POTD kind

Permanently protected module
From Wikipedia, the free encyclopedia

require("strict")

local p = {}

local function today()
	return os.date("%Y-%m-%d")
end

local function extract(wikitext)
    local extensions = {}
    -- If there's a gallery, assume multiple pictures
    -- TODO: are there ever multiple videos?
	if wikitext:find("</gallery>") then
        return "pictures"
    end
    -- Look for [[File:Foo.ext|...]] (or Image:) and extract the extension
    for ext in wikitext:gmatch("%[%[%s*[FfIi][iIm][lLa][eEg][eE]*%s*:%s*[^%]|]+%.(%w+)[^%]]*%]%]") do
        table.insert(extensions, ext:lower())
    end
    
    local count = #extensions
    if count > 1 then
    	-- unlikely, since it should be covered by the </gallery> check
        return "pictures"
    elseif count == 1 then
    	-- XXX: we could use mw.title.file.mimeType but that's an extra expensive property
        if extensions[1] == "ogv" or extensions[1] == "webm" then
            return "video"
        else
            return "picture"
        end
    else
    	-- 0 files or anything else
        return "picture"
    end
end

function p.kind(frame)
	local date = frame.args.date or today()
	local title = mw.title.new("Template:POTD protected/" .. date)
	local content = title:getContent()
	if not content then
		return "picture"
	end
	return extract(content)
end

return p