Mô đun:ViSort

Bách khoa toàn thư mở Wikipedia
Tài liệu mô đun[tạo]
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