45,337
edits
No edit summary |
No edit summary |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 21: | Line 21: | ||
local form_types = { | local form_types = { | ||
{key = "cardinal", display = "[[cardinal number|Cardinal]]"}, | {key = "cardinal", display = "[[wikt:cardinal number|Cardinal]]"}, | ||
{key = "ordinal", display = "[[ordinal number|Ordinal]]"}, | {key = "ordinal", display = "[[wikt:ordinal number|Ordinal]]"}, | ||
{key = "ordinal_abbr", display = "[[ordinal number|Ordinal]] [[abbreviation]]"}, | {key = "ordinal_abbr", display = "[[wikt:ordinal number|Ordinal]] [[wikt:abbreviation]]"}, | ||
{key = "adverbial", display = "[[adverbial number|Adverbial]]"}, | {key = "adverbial", display = "[[wikt:adverbial number|Adverbial]]"}, | ||
{key = "multiplier", display = "[[multiplier|Multiplier]]"}, | {key = "multiplier", display = "[[wikt:multiplier|Multiplier]]"}, | ||
{key = "distributive", display = "[[distributive number|Distributive]]"}, | {key = "distributive", display = "[[wikt:distributive number|Distributive]]"}, | ||
{key = "collective", display = "[[collective number|Collective]]"}, | {key = "collective", display = "[[wikt:collective number|Collective]]"}, | ||
{key = "fractional", display = "[[fractional|Fractional]]"}, | {key = "fractional", display = "[[wikt:fractional|Fractional]]"}, | ||
{key = "formal", display = "[[wikt:formal|Formal]]"}, | |||
} | } | ||
Line 112: | Line 113: | ||
-- Parse a form with modifiers such as 'vuitanta-vuit<tag:Central>' or 'سیزده<tr:sizdah>' | -- Parse a form with modifiers such as 'vuitanta-vuit<tag:Central>' or 'سیزده<tr:sizdah>' | ||
-- or 'سیزده<tr:sizdah><tag:Iranian>' into its component parts. Return a form object, i.e. an object with fields | -- or 'سیزده<tr:sizdah><tag:Iranian>' into its component parts. Return a form object, i.e. an object with fields | ||
-- `form` for the form, and `tr`, `tag`, `q`, `qq` or `link` for the modifiers. The `tag` field is a tag list | -- `form` for the form, and `alt`, `tr`, `tag`, `q`, `qq` or `link` for the modifiers. The `tag` field is a tag list | ||
-- (see above). | -- (see above). | ||
function export.parse_form_and_modifiers(form_with_modifiers) | function export.parse_form_and_modifiers(form_with_modifiers) | ||
Line 133: | Line 134: | ||
retval.tag = {content} | retval.tag = {content} | ||
end | end | ||
elseif prefix == "q" or prefix == "qq" or prefix == "tr" or prefix == "link" then | elseif prefix == "q" or prefix == "qq" or prefix == "tr" or prefix == "link" or prefix == "alt" then | ||
if retval[prefix] then | if retval[prefix] then | ||
error(("Duplicate modifier '%s' in data module form, already saw value '%s': %s"):format(prefix, | error(("Duplicate modifier '%s' in data module form, already saw value '%s': %s"):format(prefix, | ||
Line 177: | Line 178: | ||
-- Given a number form, convert it to its independent (un-affixed) form. This only makes sense for certain languages | -- Given a number form, convert it to its independent (un-affixed) form. This only makes sense for certain languages | ||
-- where there is a difference between independent and affixed forms of numerals. Currently the only such language | -- where there is a difference between independent and affixed forms of numerals. Currently the only such language | ||
-- is Swahili, where e.g. the cardinal number form for 3 is affixed [[-tatu]], independent [[tatu]], and the ordinal | -- is Swahili, where e.g. the cardinal number form for 3 is affixed [[wikt:-tatu]], independent [[wikt:tatu]], and the ordinal | ||
-- number form is [[-a tatu]], independent [[tatu]]. We rely on a set of Lua pattern substitutions to convert from | -- number form is [[wikt:-a tatu]], independent [[wikt:tatu]]. We rely on a set of Lua pattern substitutions to convert from | ||
-- affixed to independent form. | -- affixed to independent form. | ||
-- | -- | ||
Line 477: | Line 478: | ||
local right_q = formobj.qq and " " .. require("Module:qualifier").format_qualifier(formobj.qq) or "" | local right_q = formobj.qq and " " .. require("Module:qualifier").format_qualifier(formobj.qq) or "" | ||
return left_q .. m_links.full_link({ | return left_q .. m_links.full_link({ | ||
lang = lang, term = maybe_unaffix(m_data, formobj.form), alt = formobj.form, tr = formobj.tr, | lang = lang, term = maybe_unaffix(m_data, formobj.form), alt = formobj.alt or formobj.form, tr = formobj.tr, | ||
}) .. right_q | }) .. right_q | ||
end | end | ||
Line 498: | Line 499: | ||
local lang = require("Module:languages").getByCode(langcode, "1") | local lang = require("Module:languages").getByCode(langcode, "1") | ||
-- Get the data from the data module. Some modules (e.g. currently [[Module:number list/data/ka]]) have to be | -- Get the data from the data module. Some modules (e.g. currently [[wikt:Module:number list/data/ka]]) have to be | ||
-- loaded with require() because the exported numbers table has a metatable. | -- loaded with require() because the exported numbers table has a metatable. | ||
local module_name = export.get_data_module_name(langcode, "must exist") | local module_name = export.get_data_module_name(langcode, "must exist") | ||
Line 509: | Line 510: | ||
-- We represent all numbers as strings in this function to deal with the limited precision inherent in Lua numbers. | -- We represent all numbers as strings in this function to deal with the limited precision inherent in Lua numbers. | ||
-- These large numbers do occur, such as 100 trillion ([[རབ་བཀྲམ་ཆེན་པོ]]), 1 sextillion, etc. Lua represents all | -- These large numbers do occur, such as 100 trillion ([[wikt:རབ་བཀྲམ་ཆེན་པོ]]), 1 sextillion, etc. Lua represents all | ||
-- numbers as 64-bit floats, meaning that some numbers above 2^53 cannot be represented exactly. The first power of | -- numbers as 64-bit floats, meaning that some numbers above 2^53 cannot be represented exactly. The first power of | ||
-- 10 that cannot be represented exactly is 10^22 (ten sextillion in short scale, ten thousand trillion in long | -- 10 that cannot be represented exactly is 10^22 (ten sextillion in short scale, ten thousand trillion in long | ||
Line 729: | Line 730: | ||
if m_data.numeral_config then | if m_data.numeral_config then | ||
numeral = export.generate_non_arabic_numeral(m_data.numeral_config, cur_num) | numeral = export.generate_non_arabic_numeral(m_data.numeral_config, cur_num) | ||
if langcode == "qay" then numeral = numeral:gsub("A","¹"):gsub("B","²") end | |||
elseif cur_data["numeral"] then | elseif cur_data["numeral"] then | ||
numeral = export.format_fixed(cur_data["numeral"]) | numeral = export.format_fixed(cur_data["numeral"]) | ||
Line 875: | Line 877: | ||
-- Try looking up the next power of ten. | -- Try looking up the next power of ten. | ||
upper_num = make_greater_power_of_ten(1) | upper_num = make_greater_power_of_ten(1) | ||
if upper_num == next_num then | if upper_num == next_num or cur_num == "0" then | ||
upper_num = nil | upper_num = nil | ||
else | else | ||
Line 992: | Line 994: | ||
local canonical_name = lang:getCanonicalName() | local canonical_name = lang:getCanonicalName() | ||
local title = canonical_name .. " numbers" | |||
local function format_cell(contents, font_size, background, colspan, bold) | local function format_cell(contents, font_size, background, colspan, bold) | ||
Line 1,151: | Line 1,154: | ||
if cardinal_term then | if cardinal_term then | ||
table.insert(forms, " ''[[cardinal number|Cardinal]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = cardinal_term, alt = cardinal_alt, tr = cardinal_tr})) | table.insert(forms, " ''[[wikt:cardinal number|Cardinal]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = cardinal_term, alt = cardinal_alt, tr = cardinal_tr})) | ||
end | end | ||
if ordinal_term then | if ordinal_term then | ||
table.insert(forms, " ''[[ordinal number|Ordinal]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = ordinal_term, alt = ordinal_alt, tr = ordinal_tr})) | table.insert(forms, " ''[[wikt:ordinal number|Ordinal]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = ordinal_term, alt = ordinal_alt, tr = ordinal_tr})) | ||
end | end | ||
if adverbial_term then | if adverbial_term then | ||
table.insert(forms, " ''[[adverbial number|Adverbial]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = adverbial_term, alt = adverbial_alt, tr = adverbial_tr})) | table.insert(forms, " ''[[wikt:adverbial number|Adverbial]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = adverbial_term, alt = adverbial_alt, tr = adverbial_tr})) | ||
end | end | ||
if multiplier_term then | if multiplier_term then | ||
table.insert(forms, " ''[[multiplier|Multiplier]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = multiplier_term, alt = multiplier_alt, tr = multiplier_tr})) | table.insert(forms, " ''[[wikt:multiplier|Multiplier]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = multiplier_term, alt = multiplier_alt, tr = multiplier_tr})) | ||
end | end | ||
if distributive_term then | if distributive_term then | ||
table.insert(forms, " ''[[distributive number|Distributive]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = distributive_term, alt = distributive_alt, tr = distributive_tr})) | table.insert(forms, " ''[[wikt:distributive number|Distributive]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = distributive_term, alt = distributive_alt, tr = distributive_tr})) | ||
end | end | ||
if collective_term then | if collective_term then | ||
table.insert(forms, " ''[[collective number|Collective]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = collective_term, alt = collective_alt, tr = collective_tr})) | table.insert(forms, " ''[[wikt:collective number|Collective]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = collective_term, alt = collective_alt, tr = collective_tr})) | ||
end | end | ||
if fractional_term then | if fractional_term then | ||
table.insert(forms, " ''[[fractional|Fractional]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = fractional_term, alt = fractional_alt, tr = fractional_tr})) | table.insert(forms, " ''[[wikt:fractional|Fractional]]'' : " .. m_links.full_link({lang = lang, sc = sc, term = fractional_term, alt = fractional_alt, tr = fractional_tr})) | ||
end | end | ||