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.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a21ed5147b2fcf67

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