Modul:Sayılar
Bu, sayılarnı işlegen funktsiyalar içün kod.
getAffix
funktsiyası bir sayı içün affiks saylay. Onıñ 2 parametri bar: sayı ve affiks türü (i
, inde
ya da inci
). Meselâ:
{{#invoke:Sayılar|getAffix|3|i}}
=>ü{{#invoke:Sayılar|getAffix|50|inde}}
=>sinde{{#invoke:Sayılar|getAffix|124|inci}}
=>ünci
Lua kodunda:
local num = 5 local numbersModule = require('Modul:Sayılar') local text = num .. '-' .. numbersModule._getAffix(5, 'inci')
Bu kod Sayı ve affiks şablonında qullanıla.
p = {}
local AFFIXES = {
i = {
small = {'i', 'si', '-{crh-latn:ü;crh-cyrl:ю}-', '-{crh-latn:ü;crh-cyrl:ю}-', 'i',
'sı', 'si', 'i', 'ı', 'u'},
tens = {
'u', 'si', 'ı', 'ı', 'si',
'ı', 'i', 'i', 'ı', '-{crh-latn:ü;crh-cyrl:ю}-'
},
--10, 100, 1000, 10000, 100000...
large = {'u', '-{crh-latn:ü;crh-cyrl:ю}-', 'i', nil, nil, 'ı', nil, nil, 'ı'},
zero = 'ı'
},
["ı"] = 'i',
inde = {
small = {'inde', 'sinde', '-{crh-latn:ünde;crh-cyrl:юнде}-', '-{crh-latn:ünde;crh-cyrl:юнде}-', 'inde',
'sında', 'sinde', 'inde', 'ında', 'unda'},
tens = {
'unda', 'sinde', 'ında', 'ında', 'sinde',
'ında', 'inde', 'inde', 'ında', '-{crh-latn:ünde;crh-cyrl:юнде}-'
},
--10, 100, 1000, 10000, 100000...
large = {'unda', '-{crh-latn:ünde;crh-cyrl:юнде}-', 'inde', nil, nil, 'ında', nil, nil, 'ında'},
zero = 'ında'
},
["ında"] = 'inde',
inci = {
small = {'inci', 'nci', '-{crh-latn:ünci;crh-cyrl:юнджи}-', '-{crh-latn:ünci;crh-cyrl:юнджи}-', 'inci',
'ncı', 'nci', 'inci', 'ıncı', 'uncı'},
tens = {
'uncı', 'nci', 'ıncı', 'ıncı', 'nci',
'ıncı', 'inci', 'inci', 'ıncı', '-{crh-latn:ünci;crh-cyrl:юнджи}-'
},
--10, 100, 1000, 10000, 100000...
large = {'uncı', '-{crh-latn:ünci;crh-cyrl:юнджи}-', 'inci', nil, nil, 'ıncı', nil, nil, 'ıncı'},
zero = 'ıncı'
},
["ıncı"] = 'inci',
}
--[[
Saıynı ve affiks türü almay.
Sayınıñ affiksini keri qaytarmay
Argumentleri:
— anum: sayı (meselâ 5)
— affixType: affiks türü (şimdi tek 2 tür bar: 'inde'/'ında' ve 'inci'/'ıncı')
Netice: affiksnen satır (meselâ 'inde' ya da 'sında')
]]
function p._getAffix(anum, affixType)
local num = math.floor(anum)
local forms = AFFIXES[affixType]
if (type(forms) == 'string') then
forms = AFFIXES[forms]
end
if num == 0 then
return forms.zero
elseif (num % 10 > 0) and (num % 10 < 10) then
return forms.small[num % 10]
elseif (num % 100 > 0) and (num % 100 < 1000) then
local ten = math.floor(num / 10) % 10
return forms.tens[ten]
else
local currentMax = 0
local currentForm = ''
for powerOfTen, form in ipairs(forms.large) do
if (form ~= nil) and (powerOfTen > currentMax) and (num % 10^powerOfTen == 0) then
currentMax = powerOfTen
currentForm = form
end
end
return currentForm
end
end
function p.getAffix(frame)
local number = tonumber(frame.args[1])
if number == nil then
return frame.args[1]
else
local affixType = frame.args[2]
return p._getAffix(number, affixType)
end
end
return p