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:Unicode data/control

From Wikipedia, the free encyclopedia
-- [[:commons:Data:Unicode/data/category/singles.tab]]
-- [[:commons:Data:Unicode/data/category/ranges.tab]]

local function get_result()
	local categories = {
		["Cc"] = "control",
		["Cf"] = "format",
		["Cs"] = "surrogate",
		["Co"] = "private-use",
		["Cn"] = "unassigned",
		["Zs"] = "space-separator",
		["Zl"] = "line-separator",
		["Zp"] = "paragraph-separator"
	}
	
	local result={}
	local write_index
	local category
	local first_char
	
	-- singles
	result.singles={}
	local data=mw.ext.data.get("Unicode/data/category/singles.tab")
	for index, cols in ipairs(data.data) do
		if cols[1] and cols[2]  then
			first_char=string.sub(cols[2], 1, 1)
			if first_char == "C" or first_char == "Z" then
				category=categories[cols[2]]
				if category then
					result.singles[tonumber(cols[1], 16)]=category
				end
			end
		end
	end
	
	-- ranges
	data=mw.ext.data.get("Unicode/data/category/ranges.tab")
	write_index=1
	result.ranges={}
	for index, cols in ipairs(data.data) do
		if cols[1] and cols[2] and cols[3] then
			first_char=string.sub(cols[3], 1, 1)
			if first_char == "C" or first_char == "Z" then
				category=categories[cols[3]]
				if category then
					result.ranges[write_index]={tonumber(cols[1], 16), tonumber(cols[2], 16), category}
					write_index=write_index+1
				end
			end
		end
	end
	result.ranges.length = #result.ranges
	
	return result
end

return get_result()