Module:okm-sortkey
Appearance
- This module lacks a documentation subpage. Please create it.
- Useful links: subpage list • links • transclusions • testcases • sandbox
local export = {}
local us = mw.ustring
local prefix = ""
local suffix = us.char(0x3130)
function G(s)
return prefix .. s .. suffix
end
local initial_consonants = {
['ᄀ'] = G("ㄱ"),
['ᄁ'] = G("ㄱㄱ"),
['ᄂ'] = G("ㄴ"),
['ᄔ'] = G("ㄴㄴ"),
['ᄃ'] = G("ㄷ"),
['ᄄ'] = G("ㄷㄷ"),
['ᄅ'] = G("ㄹ"),
['ᄆ'] = G("ㅁ"),
['ᄇ'] = G("ㅂ"),
['ᄞ'] = G("ㅂㄱ"),
['ᄠ'] = G("ㅂㄷ"),
['ᄈ'] = G("ㅂㅂ"),
['ᄡ'] = G("ㅂㅅ"),
['ᄢ'] = G("ㅂㅅㄱ"),
['ᄣ'] = G("ㅂㅅㄷ"),
['ᄦ'] = G("ㅂㅅㅈ"),
['ᄧ'] = G("ㅂㅈ"),
['ᄩ'] = G("ㅂㅌ"),
['ᄫ'] = G("ㅂㅎ"), -- hack
['ᄉ'] = G("ㅅ"),
['ᄭ'] = G("ㅅㄱ"),
['ᄮ'] = G("ㅅㄴ"),
['ᄯ'] = G("ㅅㄷ"),
['ᄱ'] = G("ㅅㅁ"),
['ᄲ'] = G("ㅅㅂ"),
['ᄳ'] = G("ㅅㅂㄱ"),
['ᄊ'] = G("ㅅㅅ"),
['ᄸ'] = G("ㅅㅋ"),
['ᄹ'] = G("ㅅㅌ"),
['ᄺ'] = G("ㅅㅍ"),
['ᅀ'] = G("ㅅㅎ"), -- hack
['ᄋ'] = G("ㅇ"),
['ᅇ'] = G("ㅇㅇ"),
['ᅌ'] = G("ㅇㅎ"), -- hack
['ᄌ'] = G("ㅈ"),
['ᄍ'] = G("ㅈㅈ"),
['ᄎ'] = G("ㅊ"),
['ᄏ'] = G("ㅋ"),
['ᄐ'] = G("ㅌ"),
['ᄑ'] = G("ㅍ"),
['ᄒ'] = G("ㅎ"),
['ᅘ'] = G("ㅎㅎ"),
['ᅙ'] = G("ㆆ"),
}
local medials = {
['ᅡ'] = G("ㅏ"),
['ᅢ'] = G("ㅐ"),
['ᅣ'] = G("ㅑ"),
['ᅤ'] = G("ㅒ"),
['ᅥ'] = G("ㅓ"),
['ᅦ'] = G("ㅔ"),
['ᅧ'] = G("ㅕ"),
['ᅨ'] = G("ㅖ"),
['ᅩ'] = G("ㅗ"),
['ᅪ'] = G("ㅗㅏ"),
['ᅫ'] = G("ㅗㅐ"),
['ᅬ'] = G("ㅗㅣ"),
['ᅭ'] = G("ㅛ"),
['ᆄ'] = G("ㅛㅑ"),
['ᆅ'] = G("ㅛㅒ"),
['ᆈ'] = G("ㅛㅣ"),
['ᅮ'] = G("ㅜ"),
['ᅯ'] = G("ㅜㅓ"),
['ᅰ'] = G("ㅜㅔ"),
['ᅱ'] = G("ㅜㅣ"),
['ᅲ'] = G("ㅠ"),
['ᆑ'] = G("ㅠㅕ"),
['ᆒ'] = G("ㅠㅖ"),
['ᆔ'] = G("ㅠㅣ"),
['ᅳ'] = G("ㅡ"),
['ᅴ'] = G("ㅡㅣ"),
['ᅵ'] = G("ㅣ"),
['ᆞ'] = G("ㆍ"),
['ᆡ'] = G("ㆍㅣ"),
}
prefix = us.char(0x318F)
local final_consonants = {
['ᆨ'] = G("ㄱ"),
['ᆩ'] = G("ㄱㄱ"),
['ᆪ'] = G("ㄱㅅ"),
['ᆫ'] = G("ㄴ"),
['ᇆ'] = G("ㄴㄷ"),
['ᇇ'] = G("ㄴㅅ"),
['ᇈ'] = G("ㄴㅅㅎ"), -- hack
['ᆬ'] = G("ㄴㅈ"),
['ᇉ'] = G("ㄴㅌ"),
['ᆭ'] = G("ㄴㅎ"),
['ᆮ'] = G("ㄷ"),
['ᆯ'] = G("ㄹ"),
['ᆰ'] = G("ㄹㄱ"),
['ᇌ'] = G("ㄹㄱㅅ"),
['ᆱ'] = G("ㄹㅁ"),
['ᆲ'] = G("ㄹㅂ"),
['ᆳ'] = G("ㄹㅅ"),
['ᇗ'] = G("ㄹㅅㅎ"), -- hack
['ᆴ'] = G("ㄹㅌ"),
['ᆵ'] = G("ㄹㅍ"),
['ᆶ'] = G("ㄹㅎ"),
['ᇙ'] = G("ㄹㆆ"),
['ᆷ'] = G("ㅁ"),
['ᇚ'] = G("ㅁㄱ"),
['ᇜ'] = G("ㅁㅂ"),
['ᇝ'] = G("ㅁㅅ"),
['ᇟ'] = G("ㅁㅅㅎ"),
['ᇠ'] = G("ㅁㅊ"),
['ᆸ'] = G("ㅂ"),
['ᇣ'] = G("ㅂㄹ"),
['ᆹ'] = G("ㅂㅅ"),
['ᆺ'] = G("ㅅ"),
['ᇧ'] = G("ㅅㄱ"),
['ᇨ'] = G("ㅅㄷ"),
['ᆻ'] = G("ㅅㅅ"),
['ᇫ'] = G("ㅅㅎ"), -- hack
['ᆼ'] = G("ㅇ"),
['ᇰ'] = G("ㅇㅎ"), -- hack
['ᇱ'] = G("ㅇㅎㅅ"), -- hack
['ᆽ'] = G("ㅈ"),
['ᆾ'] = G("ㅊ"),
['ᆿ'] = G("ㅋ"),
['ᇀ'] = G("ㅌ"),
['ᇁ'] = G("ㅍ"),
['ᇂ'] = G("ㅎ"),
}
function export.makeSortKey(text, lang, sc)
text = us.toNFD(text)
text, _ = us.gsub(text, '.', initial_consonants)
text, _ = us.gsub(text, '.', medials)
text, _ = us.gsub(text, '.', final_consonants)
return text
end
return export