Mô đun:ViSort
Giao diện
local p = {}
local vi_alphabet = {
"a", "à", "ả", "ã", "á", "ạ", "ă", "ằ", "ẳ", "ẵ", "ắ", "ặ", "â", "ầ", "ẩ", "ẫ", "ấ", "ậ",
"b", "c", "d", "đ", "e", "è", "ẻ", "ẽ", "é", "ẹ", "ê", "ề", "ể", "ễ", "ế", "ệ", "f", "g",
"h", "i", "ì", "ỉ", "ĩ", "í", "ị", "j", "k", "l", "m", "n", "o", "ò", "ỏ", "õ", "ó", "ọ",
"ô", "ồ", "ổ", "ỗ", "ố", "ộ", "ơ", "ờ", "ở", "ỡ", "ớ", "ợ", "p", "q", "r", "s", "t",
"u", "ù", "ủ", "ũ", "ú", "ụ", "ư", "ừ", "ử", "ữ", "ứ", "ự", "v", "w", "x",
"y", "ỳ", "ỷ", "ỹ", "ý", "ỵ", "z"
}
local function index(list, key)
local index = {}
for k, v in pairs(list) do
index[v] = k
end
return index[key]
end
function p.sortAsc(a, b)
local _a = mw.ustring.lower(mw.ustring.sub(mw.text.trim(a), 0, 1))
local _b = mw.ustring.lower(mw.ustring.sub(mw.text.trim(b), 0, 1))
return index(vi_alphabet, _a) < index(vi_alphabet, _b)
end
function p.sortDesc(a, b)
local _a = mw.ustring.lower(mw.ustring.sub(mw.text.trim(a), 0, 1))
local _b = mw.ustring.lower(mw.ustring.sub(mw.text.trim(b), 0, 1))
return index(vi_alphabet, _a) > index(vi_alphabet, _b)
end
return p