Modul:Hani-sortkey/data/serializer

Daripada Wiktionary

Pendokumenan untuk modul ini boleh diciptakan di Modul:Hani-sortkey/data/serializer/doc

local export = {}

function export.main(checker)
	local function table_insert(t, v)
		if not checker then
			v = v:gsub(".", function(m)
				local byte = m:byte()
				if byte > 0 and byte < 0x20 then
					return "\\" .. ("%03d"):format(byte)
				elseif byte == 0 or byte > 244 then
					return "\\" .. byte
				end
			end)
		end
		-- Negative additional stroke counts are subtracted from 10 (i.e. -1 becomes -9, -2 becomes -8 etc.), so that lower values sort before higher ones (i.e. -3, -2, -1 ...).
		v = v:gsub("(%-)(%d)", function(m1, m2)
			m2 = 10 - m2
			return m1 .. m2
		end)
		table.insert(t, v)
	end
	
	local ret = {}
	table_insert(ret, "\2")
	
	for k, v in pairs(require("Module:Hani-sortkey/data").preconvert) do
		table_insert(ret, k .. "\1" .. v .. "\2")
	end
	
	table_insert(ret, "\255")
	
	local keys = require("Module:Hani-sortkey/data").keys
	for i = 1, 0x323AF do
		if keys[i] then
			table_insert(ret, keys[i])
		end
	end
	
	return table.concat(ret)
end

return export