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: a429e3250e5bad68

Jump to content

Module:Sandbox/BrandonXLF/2

From Wikipedia, the free encyclopedia

-- Sandbox, do not delete
-- Module:Time/js-utils

-- Get all possible JavaScript strings for a language, defaulting to the default message language
local function get_strings(lang_arg)
	local lang = lang_arg and mw.getLanguage(lang_arg) or mw.message.getDefaultLanguage();
	local digit_str = lang:formatNum(1234567890, {noCommafy = true})

	local function msg(key)
		return mw.message.new(key):inLanguage(lang):plain()
	end
	
	return {
		wd = {																	-- Weekdays
			msg('sunday'),
			msg('monday'),
			msg('tuesday'),
			msg('wednesday'),
			msg('thursday'),
			msg('friday'),
			msg('saturday'),
		},
		wd_a = {																-- Weekdays abbreviated
			msg('sun'),
			msg('mon'),
			msg('tue'),
			msg('wed'),
			msg('thu'),
			msg('fri'),
			msg('sat'),
		},
		m = {																	-- Months
			msg('january'),
			msg('february'),
			msg('march'),
			msg('april'),
			msg('may_long'),
			msg('june'),
			msg('july'),
			msg('august'),
			msg('september'),
			msg('october'),
			msg('november'),
			msg('december'),
		},
		m_g = {																	-- Months genitive
			msg('january-gen'),
			msg('february-gen'),
			msg('march-gen'),
			msg('april-gen'),
			msg('may-gen'),
			msg('june-gen'),
			msg('july-gen'),
			msg('august-gen'),
			msg('september-gen'),
			msg('october-gen'),
			msg('november-gen'),
			msg('december-gen'),
		},
		m_a = {																	-- Months abbreviated
			msg('jan'),
			msg('feb'),
			msg('mar'),
			msg('apr'),
			msg('may'),
			msg('jun'),
			msg('jul'),
			msg('aug'),
			msg('sep'),
			msg('oct'),
			msg('nov'),
			msg('dec'),
		},
		di = digit_str ~= "1234567890"											-- Digits
			and {
				['1'] = mw.ustring.sub(digit_str, 1, 1),
				['2'] = mw.ustring.sub(digit_str, 2, 2),
				['3'] = mw.ustring.sub(digit_str, 3, 3),
				['4'] = mw.ustring.sub(digit_str, 4, 4),
				['5'] = mw.ustring.sub(digit_str, 5, 5),
				['6'] = mw.ustring.sub(digit_str, 6, 6),
				['7'] = mw.ustring.sub(digit_str, 7, 7),
				['8'] = mw.ustring.sub(digit_str, 8, 8),
				['9'] = mw.ustring.sub(digit_str, 9, 9),
				['0'] = mw.ustring.sub(digit_str, 10, 10)
			}
			or nil																-- Use default browser digits (0-9)
	}
end

-- Keep only the strings that could possibly be required by the format string
-- Might return false positives, but that's ok since the strings will simply be unused
local function possible_strings(strings, fmt)
	local required_strs = {
		di = strings.di
	};

	if fmt:find('M', 1, true)
		then required_strs.m_a = strings.m_a
	end

	if fmt:find('F', 1, true)
		then required_strs.m = strings.m
	end

	if fmt:find('xg', 1, true)
		then required_strs.m_g = strings.m_g
	end

	if fmt:find('D', 1, true)
		then required_strs.wd_a = strings.wd_a
	end

	if fmt:find('l', 1, true)
		then required_strs.wd = strings.wd
	end

	return required_strs
end

return {
	get_strings = get_strings,
	possible_strings = possible_strings,
	}