模組:Number list/data/yo
- 下列說明文檔由Module:documentation/functions/number list所生成。[編輯]
- 相關連結:根頁面 • 根頁面的子頁面 • 本頁面的子頁面 • 链入 • 嵌入包含 • 測試用例 • 沙盒
本模块包含有關約魯巴語中各種類型數字的数据。
(edit)
local export = {}
export.additional_number_types = {
{ key = "counting", display = "[[counting number|Counting]]", after = "cardinal" },
{ key = "adjectival", display = "[[adjectival|Adjectival]]", after = "counting" },
}
local numbers = {}
export.numbers = numbers
-- Delete any number types that don't apply.
--[[ template
numbers[1] = {
cardinal = "",
counting = "",
adjectival = "",
ordinal = "",
adverbial = "",
distributive = "",
collective = "",
fractional = "",
}
template past 4:
numbers[5] = {
cardinal = "",
counting = "",
}
]]
local adjectival_prefix = "m"
local ordinal_prefix = "k"
local adverbial_prefix = "ẹ̀ẹ̀"
local fractional_prefix = "ìdá"
local low_tones = {
a = "àà",
e = "èè",
['ẹ'] = "ẹ̀ẹ̀",
i = "ìì",
o = "òò",
['ọ'] = "ọ̀ọ̀",
u = "ùù",
}
numbers[0] = {
cardinal = "òdo",
counting = "òdo",
}
numbers[1] = {
cardinal = {"ọ̀kan", "ení"},
counting = "oókan",
adjectival = {"kan", "méní"},
ordinal = "kìíní",
adverbial = adverbial_prefix .. "kan",
distributive = "ọ̀kọ̀ọ̀kan",
collective = "ọ̀kọ̀ọ̀kan",
}
numbers[2] = {
cardinal = "èjì",
counting = "eéjì",
fractional = "ìdajì",
}
numbers[3] = {
cardinal = "ẹ̀ta",
counting = "ẹẹ́ta",
fractional = "ìdata",
}
numbers[4] = {
cardinal = "ẹ̀rin",
counting = "ẹẹ́rin",
fractional = "ìdarin",
}
numbers[5] = {
cardinal = "àrún",
counting = "aárùn-ún",
}
numbers[6] = {
cardinal = "ẹ̀fà",
counting = "ẹẹ́fà",
}
numbers[7] = {
cardinal = "èje",
counting = "eéje",
}
numbers[8] = {
cardinal = "ẹ̀jọ",
counting = "ẹẹ́jọ",
}
numbers[9] = {
cardinal = "ẹ̀sán",
counting = "ẹẹ́sàn-án",
}
numbers[10] = {
cardinal = "ẹ̀wá",
counting = "ẹẹ́wàá",
}
numbers[20] = {
cardinal = "ogún",
counting = "ogún",
adjectival = "ogún",
ordinal = "ogún",
adverbial = "ìgbà ogún",
distributive = "ogún ogún",
collective = "ogoogún",
fractional = "ìdá ogún",
}
numbers[30] = {
cardinal = "ọgbọ̀n",
counting = "ọgbọ̀n",
adjectival = "ọgbọ̀n",
ordinal = "ọgbọ̀n",
adverbial = "ìgbà ọgbọ̀n",
distributive = "ọgbọ̀n ọgbọ̀n",
collective = "ọgbọọgbọ̀n",
fractional = "ìdá ọgbọ̀n",
}
numbers[200] = {
cardinal = "igba",
counting = "igba",
adjectival = "igba",
ordinal = "igba",
adverbial = "ìgbà igba",
distributive = "igba igba",
}
local function create_adjectival(number)
if number > 10 then
last_digit = math.floor(number%10)
if last_digit == 1 or last_digit == 9 then
return adjectival_prefix .. "ọ́" .. mw.ustring.sub(numbers[number].counting, 3)
end
end
return adjectival_prefix .. mw.ustring.sub(numbers[number].counting, 2)
end
local function create_ord_adv_sub(number)
base_form = numbers[number].counting
if number > 10 then
last_digit = math.floor(number%10)
if last_digit == 1 or last_digit == 9 then
base_form = "ọọ́" .. mw.ustring.sub(base_form, 3)
end
end
if mw.ustring.sub(base_form, 3, 3) == "́" then
return mw.ustring.sub(base_form, 1, 1) .. mw.ustring.sub(base_form, 4)
else
return mw.ustring.sub(base_form, 1, 1) .. mw.ustring.sub(base_form, 3)
end
end
local function create_collective(number)
str = mw.ustring.sub(numbers[number].counting, 1, 1)
if number > 10 then
last_digit = math.floor(number%10)
if last_digit == 1 or last_digit == 9 then
str = "ọ"
end
end
s = low_tones[str]
if mw.ustring.sub(numbers[number].adjectival, 3, 3) == "́" then
return mw.ustring.sub(numbers[number].adjectival, 1, 4) .. s .. mw.ustring.sub(numbers[number].adjectival, 4)
else
return mw.ustring.sub(numbers[number].adjectival, 1, 3) .. s .. mw.ustring.sub(numbers[number].adjectival, 3)
end
end
local function get_cardinal(number)
return numbers[number].cardinal
end
local function get_adjectival(number)
return numbers[number].adjectival
end
local pre_teens = "lá"
local minus = "dín"
local plus = "lé"
local last_start = {
['à'] = "láà",
i = "ní",
o = "ló",
['ọ'] = "lọ́",
}
local replace_card = {
["1"] = "ọ̀kàn",
["2"] = "èjì",
["3"] = "ẹ̀tà",
["4"] = "ẹ̀rìn",
["5"] = "àrún",
}
local replace_count = {
["1"] = "oókàn",
["2"] = "eéjì",
["3"] = "ẹẹ́tà",
["4"] = "ẹẹ́rìn",
["5"] = "aárùn-ún-",
}
for number = 11, 14 do
base_num = number - 10
numbers[number] = {
cardinal = replace_card[tostring(base_num)] .. pre_teens,
counting = replace_count[tostring(base_num)] .. pre_teens,
}
end
for number = 15, 19 do
base_num = 10 - (number - 10)
numbers[number] = {
cardinal = replace_card[tostring(base_num)] .. minus .. "lógún",
counting = replace_count[tostring(base_num)] .. minus .. "lógún",
}
end
for number = 2, 19 do
str = create_ord_adv_sub(number)
numbers[number].adjectival = create_adjectival(number)
numbers[number].ordinal = ordinal_prefix .. str
numbers[number].distributive = get_adjectival(number) .. " " .. get_adjectival(number)
numbers[number].adverbial = adverbial_prefix .. adjectival_prefix .. str
numbers[number].collective = create_collective(number)
end
for number = 5, 19 do
numbers[number].fractional = fractional_prefix .. get_adjectival(number)
end
local twenties_endings = {
['2'] = "jì",
['3'] = "ta",
['4'] = "rin",
['5'] = "rùn-ún",
['6'] = "fà",
['7'] = "je",
['8'] = "jọ",
['9'] = "sàn-án",
['10'] = "wàá",
}
local function create_twenties(number)
str = numbers[number].counting
if mw.ustring.sub(str, 1, 1) == "e" then
return "ogó" .. twenties_endings[tostring(number)]
else
return "ọgọ́" .. twenties_endings[tostring(number)]
end
end
local function create_mid_twenties(number)
str = numbers[number].counting
if mw.ustring.sub(str, 1, 1) == "o" then
return "àádó" .. twenties_endings[tostring(number / 20)]
else
return "àádọ́" .. twenties_endings[tostring(number / 20)]
end
end
-- Add cardinals & counting numbers for 21-185
for i = 1, 10 do
local twenties = i * 20
local twenties_cardinal
local mid_twenties
if i ~= 1 then
twenties_cardinal = create_twenties(i)
if i ~= 10 then
numbers[twenties] = {
cardinal = twenties_cardinal,
counting = twenties_cardinal,
adjectival = twenties_cardinal,
ordinal = twenties_cardinal,
adverbial = 'ìgbà' .. " " .. twenties_cardinal,
distributive = twenties_cardinal .. " " .. twenties_cardinal,
}
end
if i ~= 2 and i ~= 10 then
mid_twenties = create_mid_twenties(twenties)
numbers[twenties - 10] = {
cardinal = mid_twenties,
counting = mid_twenties,
adjectival = mid_twenties,
ordinal = mid_twenties,
adverbial = 'ìgbà' .. " " .. mid_twenties,
distributive = mid_twenties .. " " .. mid_twenties,
}
elseif i == 10 then
mid_twenties = "àádọ́wàá"
numbers[twenties - 10] = {
cardinal = mid_twenties,
counting = mid_twenties,
adjectival = mid_twenties,
ordinal = mid_twenties,
adverbial = 'ìgbà' .. " " .. mid_twenties,
distributive = mid_twenties .. " " .. mid_twenties,
}
else
mid_twenties = numbers[twenties - 10].cardinal
end
end
if i ~= 1 then
for ones = -15, -11 do
base_num = -10 - ones
check = mw.ustring.sub(mid_twenties, 1, 1)
numbers[twenties + ones] = {
cardinal = replace_card[tostring(base_num)] .. minus .. last_start[check] .. mw.ustring.sub(mid_twenties, 2),
counting = replace_count[tostring(base_num)] .. minus .. last_start[check] .. mw.ustring.sub(mid_twenties, 2),
}
numbers[twenties + ones].adjectival = create_adjectival(twenties + ones)
end
for ones = -9, -6 do
base_num = 10 + ones
check = mw.ustring.sub(mid_twenties, 1, 1)
numbers[twenties + ones] = {
cardinal = replace_card[tostring(base_num)] .. plus .. last_start[check] .. mw.ustring.sub(mid_twenties, 2),
counting = replace_count[tostring(base_num)] .. plus .. last_start[check] .. mw.ustring.sub(mid_twenties, 2),
}
numbers[twenties + ones].adjectival = create_adjectival(twenties + ones)
end
end
twenties_cardinal = numbers[twenties].cardinal
for ones = -5, -1 do
base_num = 0 - ones
check = mw.ustring.sub(twenties_cardinal, 1, 1)
numbers[twenties + ones] = {
cardinal = replace_card[tostring(base_num)] .. minus .. last_start[check] .. mw.ustring.sub(twenties_cardinal, 2),
counting = replace_count[tostring(base_num)] .. minus .. last_start[check] .. mw.ustring.sub(twenties_cardinal, 2)
}
numbers[twenties + ones].adjectival = create_adjectival(twenties + ones)
end
if i ~= 10 then
for ones = 1, 4 do
base_num = ones
check = mw.ustring.sub(twenties_cardinal, 1, 1)
numbers[twenties + ones] = {
cardinal = replace_card[tostring(base_num)] .. plus .. last_start[check] .. mw.ustring.sub(twenties_cardinal, 2),
counting = replace_count[tostring(base_num)] .. plus .. last_start[check] .. mw.ustring.sub(twenties_cardinal, 2)
}
numbers[twenties + ones].adjectival = create_adjectival(twenties + ones)
end
end
end
numbers[300] = {
cardinal = "ọ̀ọ́dúnrún",
counting = "ọ̀ọ́dúnrún",
adjectival = "ọ̀ọ́dúnrún",
ordinal = "ọ̀ọ́dúnrún",
adverbial = "ìgbà ọ̀ọ́dúnrún",
distributive = "ọ̀ọ́dúnrún ọ̀ọ́dúnrún",
}
numbers[400] = {
cardinal = "irinwó",
counting = "irinwó",
adjectival = "irinwó",
ordinal = "irinwó",
adverbial = "ìgbà irinwó",
distributive = "irinwó irinwó",
}
numbers[2000] = {
cardinal = "ẹgbàá",
counting = "ẹgbàá",
adjectival = "ẹgbàá",
ordinal = "ẹgbàá",
adverbial = "ìgbà ẹgbàá",
}
numbers[20000] = {
cardinal = "ọ̀kẹ́",
counting = "ọ̀kẹ́ kan",
}
local two_hundreds_endings = {
['3'] = "ta",
['4'] = "rin",
['5'] = "rún",
['6'] = "fà",
['7'] = "je",
['8'] = "jọ",
['9'] = "sán",
['10'] = "wàá",
}
local function create_two_hundreds(number)
str = numbers[number].counting
if mw.ustring.sub(str, 1, 1) == "e" then
return "egbè" .. two_hundreds_endings[tostring(number)]
else
return "ẹgbẹ̀" .. two_hundreds_endings[tostring(number)]
end
end
local function create_mid_two_hundreds(number)
str = numbers[number].counting
if mw.ustring.sub(str, 1, 1) == "e" then
return "ẹ̀ẹ́dé" .. mw.ustring.sub(str, 2)
else
return "ẹ̀ẹ́dẹ́" .. mw.ustring.sub(str, 2)
end
end
for i = 3, 10 do
local two_hundreds = i * 200
local mid_two_hundreds
if i ~= 10 then
two_hundreds_cardinals = create_two_hundreds(i)
numbers[two_hundreds] = {
cardinal = two_hundreds_cardinals,
counting = two_hundreds_cardinals,
adjectival = two_hundreds_cardinals,
ordinal = two_hundreds_cardinals,
adverbial = 'ìgbà' .. " " .. two_hundreds_cardinals,
}
end
if i ~= 10 then
mid_two_hundreds = create_mid_two_hundreds(two_hundreds)
numbers[two_hundreds - 100] = {
cardinal = mid_two_hundreds,
counting = mid_two_hundreds,
adjectival = mid_two_hundreds,
ordinal = mid_two_hundreds,
adverbial = 'ìgbà' .. " " .. mid_two_hundreds,
}
else
mid_two_hundreds = "ẹ̀ẹ́dẹ́gbẹ̀wàá"
numbers[two_hundreds - 100] = {
cardinal = mid_two_hundreds,
counting = mid_two_hundreds,
adjectival = mid_two_hundreds,
ordinal = mid_two_hundreds,
adverbial = 'ìgbà' .. " " .. mid_two_hundreds,
}
end
end
return export