Module:Hani-sortkey/data/serializer
Itsura
- 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
Kategorya:
- Sortkey-generating modules by script
- Katitikang Han na modyul
- Sortkey-generating modules
- Chinese Pidgin English na modyul
- Yonaguni na modyul
- Daur na modyul
- Katimugang Pinghua na modyul
- Shaojiang Min na modyul
- Jie na modyul
- Datian Min na modyul
- Central Bai na modyul
- Maramihang wika na modyul
- Tuoba na modyul
- Ai-Cham na modyul
- Shaozhou Tuhua na modyul
- Zhuang na modyul
- Gaya na modyul
- Sitsuwanes na modyul
- Northern Pinghua na modyul
- Goguryeo na modyul
- Kikai na modyul
- Viyetnamita na modyul
- Yoron na modyul
- Toisanes na modyul
- Zauzou na modyul
- Kyakala na modyul
- Sanxiang Min na modyul
- Nùng na modyul
- Hokkien na modyul
- Zakhring na modyul
- Gan na modyul
- Baekje na modyul
- Lumang Tsino na modyul
- Wuhuan na modyul
- Lama Bai na modyul
- Hakka na modyul
- Zhenan Min na modyul
- Puxian Min na modyul
- Okinoerabu na modyul
- Yemaek na modyul
- Jin na modyul
- Macau Pidgin Portuguese na modyul
- Dunggano na modyul
- Tsino na modyul
- Classical Tibetan na modyul
- Northern Min na modyul
- Hapones na modyul
- Kunigami na modyul
- Leizhou Min na modyul
- Yaeyama na modyul
- Lumang Hapones na modyul
- Hachijō na modyul
- Miyako na modyul
- Caolan na modyul
- E na modyul
- Wu na modyul
- Teochew na modyul
- Hainanese na modyul
- Min Nan na modyul
- Tuyuhun na modyul
- Xianbei na modyul
- Northern Amami Ōshima na modyul
- Panyi Bai na modyul
- Bala na modyul
- Tokunoshima na modyul
- Mandarin na modyul
- Huizhou na modyul
- Min Sentral na modyul
- Longyan Min na modyul
- Middle Mongol na modyul
- Kantones na modyul
- Silanganang Min na modyul
- Waxiang na modyul
- Southern Amami Ōshima na modyul
- Sui na modyul
- Pampanitikang Tsino na modyul
- Tày na modyul
- Middle Vietnamese na modyul
- Altsuka na modyul
- Gitnang Tsino na modyul
- Okinawense na modyul
- Biao-Jiao Mien na modyul
- Bailang na modyul
- Xiang na modyul
- Lumang Wigur na modyul
- Khitan na modyul
- Hailufeng Min na modyul
- Biyo na modyul
- Buyeo na modyul
- Bouyei na modyul
- Southern Bai na modyul
- Xiongnu na modyul
- Rouran na modyul
- Data modules by script
- Data modules
- Katitikang Han data modules
- Chinese Pidgin English data modules
- Yonaguni data modules
- Daur data modules
- Katimugang Pinghua data modules
- Shaojiang Min data modules
- Jie data modules
- Datian Min data modules
- Central Bai data modules
- Maramihang wika data modules
- Tuoba data modules
- Ai-Cham data modules
- Shaozhou Tuhua data modules
- Zhuang data modules
- Gaya data modules
- Sitsuwanes data modules
- Northern Pinghua data modules
- Goguryeo data modules
- Kikai data modules
- Viyetnamita data modules
- Yoron data modules
- Toisanes 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
- Lumang Tsino 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
- Dunggano data modules
- Tsino data modules
- Classical Tibetan data modules
- Northern Min data modules
- Hapones data modules
- Kunigami data modules
- Leizhou Min data modules
- Yaeyama data modules
- Lumang Hapones data modules
- Hachijō data modules
- Miyako data modules
- Caolan data modules
- E data modules
- Wu data modules
- Teochew data modules
- Hainanese data modules
- Min Nan data modules
- Tuyuhun data modules
- Xianbei data modules
- Northern Amami Ōshima data modules
- Panyi Bai data modules
- Bala data modules
- Tokunoshima data modules
- Mandarin data modules
- Huizhou data modules
- Min Sentral data modules
- Longyan Min data modules
- Middle Mongol data modules
- Kantones data modules
- Silanganang Min data modules
- Waxiang data modules
- Southern Amami Ōshima data modules
- Sui data modules
- Pampanitikang Tsino data modules
- Tày data modules
- Middle Vietnamese data modules
- Altsuka data modules
- Gitnang Tsino data modules
- Okinawense data modules
- Biao-Jiao Mien data modules
- Bailang data modules
- Xiang data modules
- Lumang Wigur data modules
- Khitan data modules
- Hailufeng Min data modules
- Biyo data modules
- Buyeo data modules
- Bouyei data modules
- Southern Bai data modules
- Xiongnu data modules
- Rouran data modules
- Templates and modules needing documentation