Module:Hani-sortkey/data/serializer
Appearance
- This module lacks a documentation subpage. Please create it.
- Useful links: root page • root page’s subpages • links • transclusions • testcases • sandbox
local insert = table.insert
local export = {}
local byte_lookup = {
[0x07] = "\\a",
[0x08] = "\\b",
[0x09] = "\\t",
[0x0A] = "\\n",
[0x0B] = "\\v",
[0x0C] = "\\f",
[0x0D] = "\\r",
[0x22] = "\\\"",
[0x5C] = "\\\\",
}
local _char = string.char
local function char(ch)
return byte_lookup[ch] or
(ch < 0x20 or ch >= 0x7F) and "\\" .. ("%03d"):format(ch) or
_char(ch)
end
function export.main(checker)
local keys = require("Module:Hani-sortkey/data")
local radicals = require("Module:Hani-sortkey/data/core").radicals
local ret, val = {}
for i = 1, 0x323AF do
if keys[i] then
for r, as in keys[i]:gmatch("(%d+)%.(.*)") do
insert(ret, char(tonumber(r)))
-- Negative additional stroke counts are subtractive (i.e. -1 becomes -9, -2 becomes -8 etc.), so that lower values sort before higher ones (i.e. -3, -2, -1 ...).
as = tonumber(as)
insert(ret, char(as < 0 and 0 - as or as + 10))
end
end
end
-- Compress the result.
for i = 1, #ret do
local ch = ret[i]
if ch:match("^\\%d%d%d$") then
local nxt = ret[i + 1]
if not (nxt and nxt:sub(1, 1):match("%d")) then
ret[i] = ("\\%d"):format(ch:sub(2))
end
end
end
return table.concat(ret)
end
return export
Categories:
- Sortkey-generating modules by script
- Han script modules
- Sortkey-generating modules
- Chinese Pidgin English modules
- Yonaguni modules
- Daur modules
- Southern Pinghua modules
- Shaojiang Min modules
- Jie modules
- Datian Min modules
- Central Bai modules
- Translingual modules
- Tuoba modules
- Ai-Cham modules
- Shaozhou Tuhua modules
- Zhuang modules
- Gaya modules
- Sichuanese modules
- Northern Pinghua modules
- Goguryeo modules
- Kikai modules
- Mandarin modules
- Yoron modules
- Taishanese modules
- Zauzou modules
- Kyakala modules
- Sanxiang Min modules
- Nùng modules
- Hokkien modules
- Zakhring modules
- Gan modules
- Baekje modules
- Old Chinese modules
- Wuhuan modules
- Lama Bai modules
- Hakka modules
- Zhenan Min modules
- Puxian Min modules
- Okinoerabu modules
- Yemaek modules
- Jin modules
- Macau Pidgin Portuguese modules
- Old Japanese modules
- Chinese modules
- Huizhou modules
- Northern Min modules
- Japanese modules
- Kunigami modules
- Leizhou Min modules
- Dungan modules
- Hachijō modules
- Min Nan modules
- Miyako modules
- Okinawan modules
- Bailang modules
- Wu modules
- Teochew modules
- Hainanese modules
- Southern Bai modules
- Tuyuhun modules
- Xianbei modules
- Bala modules
- Xiang modules
- Panyi Bai modules
- Tokunoshima modules
- Central Min modules
- Middle Mongol modules
- Cantonese modules
- Longyan Min modules
- Northern Amami Ōshima modules
- Eastern Min modules
- Middle Chinese modules
- Waxiang modules
- Southern Amami Ōshima modules
- Classical Tibetan modules
- Caolan modules
- Tày modules
- Middle Vietnamese modules
- Alchuka modules
- Yaeyama modules
- Vietnamese modules
- Biao-Jiao Mien modules
- Sui modules
- E modules
- Old Uyghur modules
- Khitan modules
- Hailufeng Min modules
- Biyo modules
- Buyeo modules
- Bouyei modules
- Literary Chinese modules
- Xiongnu modules
- Rouran modules
- Data modules by script
- Data modules
- Han script data modules
- Chinese Pidgin English data modules
- Yonaguni data modules
- Daur data modules
- Southern Pinghua data modules
- Shaojiang Min data modules
- Jie data modules
- Datian Min data modules
- Central Bai data modules
- Translingual data modules
- Tuoba data modules
- Ai-Cham data modules
- Shaozhou Tuhua data modules
- Zhuang data modules
- Gaya data modules
- Sichuanese data modules
- Northern Pinghua data modules
- Goguryeo data modules
- Kikai data modules
- Mandarin data modules
- Yoron data modules
- Taishanese data modules
- Zauzou data modules
- Kyakala data modules
- Sanxiang Min data modules
- Nùng data modules
- Hokkien data modules
- Zakhring data modules
- Gan data modules
- Baekje data modules
- Old Chinese data modules
- Wuhuan data modules
- Lama Bai data modules
- Hakka data modules
- Zhenan Min data modules
- Puxian Min data modules
- Okinoerabu data modules
- Yemaek data modules
- Jin data modules
- Macau Pidgin Portuguese data modules
- Old Japanese data modules
- Chinese data modules
- Huizhou data modules
- Northern Min data modules
- Japanese data modules
- Kunigami data modules
- Leizhou Min data modules
- Dungan data modules
- Hachijō data modules
- Min Nan data modules
- Miyako data modules
- Okinawan data modules
- Bailang data modules
- Wu data modules
- Teochew data modules
- Hainanese data modules
- Southern Bai data modules
- Tuyuhun data modules
- Xianbei data modules
- Bala data modules
- Xiang data modules
- Panyi Bai data modules
- Tokunoshima data modules
- Central Min data modules
- Middle Mongol data modules
- Cantonese data modules
- Longyan Min data modules
- Northern Amami Ōshima data modules
- Eastern Min data modules
- Middle Chinese data modules
- Waxiang data modules
- Southern Amami Ōshima data modules
- Classical Tibetan data modules
- Caolan data modules
- Tày data modules
- Middle Vietnamese data modules
- Alchuka data modules
- Yaeyama data modules
- Vietnamese data modules
- Biao-Jiao Mien data modules
- Sui data modules
- E data modules
- Old Uyghur data modules
- Khitan data modules
- Hailufeng Min data modules
- Biyo data modules
- Buyeo data modules
- Bouyei data modules
- Literary Chinese data modules
- Xiongnu data modules
- Rouran data modules
- Templates and modules needing documentation