Modul:Math/tonumber
Naviqasiyaya keç
Axtarışa keç
Çağırış funksiyaları
integer
{{#invoke:math/tonumber|integer|…}}
Sətirdə olan ilk müsbət tam ədədi qaytarır.
Giriş dəyəri | Nəticə |
---|---|
2014 | 2014 |
[[2014]] | 2014 |
[[2014-cü il|2014]] | 2014 |
[[31 dekabr]] [[2014]] | 31 |
F-15 | 15 |
Lazım olduqda şablonlarda istifadə olunur.
quantity
{{#invoke:math/tonumber|quantity|…}}
Sətirdən kəmiyyət dəyərini qaytarır.
Giriş dəyəri | Nəticə |
---|---|
100 000 | 100000 |
100 min nəf. | 100000 |
100,9 min nəf. | 100900 |
100,90 min nəf. | 100900 |
100,90 min nəf. (2017) | 100900 |
100 000 ± 10 | 100000 |
Lazım olduqda şablonlarda istifadə olunur.
year
Sətirdə tapılan ilk 3- və ya 4-rəqəmli tam müsbət ədədi qaytarır.
{{#invoke:math/tonumber|year|…}} {{#invoke:math/tonumber|year|…|default=…}}
Giriş dəyəri | Nəticə |
---|---|
2014 | 2014 |
910 | 910 |
[[2014]] | 2014 |
[[2014-cü il|2014]] | 2014 |
[[31 dekabr]] [[2014]] | 2014 |
F-15 | |
[[e.ə 2316-cı il]] | -2316 |
100,90 min nəf. (2017) | 2017 |
Sınaqlar
1 testdə xəta baş verdi.
test_integer:
Mətn | Gözlənilən | Aktual | |
---|---|---|---|
{{ #invoke:Math/tonumber|integer | 2014 }} | 2014 | 2014 | |
{{ #invoke:Math/tonumber|integer | 910 }} | 910 | 910 | |
{{ #invoke:Math/tonumber|integer | 14 }} | 14 | 14 | |
{{ #invoke:Math/tonumber|integer | 1 }} | 1 | 1 | |
{{ #invoke:Math/tonumber|integer | -100 }} | 100 | 100 | |
{{ #invoke:Math/tonumber|integer | [[2014]] }} | 2014 | 2014 | |
{{ #invoke:Math/tonumber|integer | [[2014-cü il|2014]] }} | 2014 | 2014 | |
{{ #invoke:Math/tonumber|integer | [[31 dekabr]] [[2014]] }} | 31 | 31 | |
{{ #invoke:Math/tonumber|integer | [[e.ə 2316-cı il]] }} | 2316 | 2316 | |
{{ #invoke:Math/tonumber|integer | 22 mart 14-cü il }} | 22 | 22 | |
{{ #invoke:Math/tonumber|integer | F-15 }} | 15 | 15 |
test_year:
Mətn | Gözlənilən | Aktual | |
---|---|---|---|
{{ #invoke:Math/tonumber|year | 2014 }} | 2014 | 2014 | |
{{ #invoke:Math/tonumber|year | 910 }} | 910 | 910 | |
{{ #invoke:Math/tonumber|year | 14 }} | 14 | 14 | |
{{ #invoke:Math/tonumber|year | 1 }} | 1 | 1 | |
{{ #invoke:Math/tonumber|year | -100 }} | 100 | ||
{{ #invoke:Math/tonumber|year | e.ə 10 }} | -10 | -10 | |
{{ #invoke:Math/tonumber|year | [[e.ə 10]] }} | -10 | -10 | |
{{ #invoke:Math/tonumber|year | [[2014]] }} | 2014 | 2014 | |
{{ #invoke:Math/tonumber|year | [[2014-cü il|2014]] }} | 2014 | 2014 | |
{{ #invoke:Math/tonumber|year | [[31 dekabr]] [[2014]] }} | 2014 | 2014 | |
{{ #invoke:Math/tonumber|year | [[e.ə 2316-cı il]] }} | -2316 | -2316 | |
{{ #invoke:Math/tonumber|year | 22 mart 14-cü il }} | |||
{{ #invoke:Math/tonumber|year | F-15 }} |
--[[
This module convert strings to numbers.
]]
local p = {}
-- Get first integer number from string.
function p.integer( frame )
local s = frame.args[1]
s = string.gsub( s, '<[^<>]+>', '' ) -- strip HTML tags
s = string.gsub( s, '[^0-9]', ' ' )
s = mw.text.trim( s )
s = mw.text.split( s, ' ' )[1]
return tonumber( s )
end
-- Get number from quantity (e.g. from Wikidata).
function p.quantity( frame )
local s = frame.args[1]
s = string.gsub( s, '<[^<>]+>', '' ) -- strip HTML tags
s = string.gsub( s, ' ', '' )
s = string.gsub( s, 'min', '000' )
s = string.gsub( s, 'mln', '000000' )
s = string.gsub( s, 'mlrd', '000000000' )
s = string.gsub( s, ',(%d%d%d)000', '%1' )
s = string.gsub( s, ',(%d%d)000', '%10' )
s = string.gsub( s, ',(%d)000', '%100' )
s = string.gsub( s, '±.*$', '' )
s = string.gsub( s, '[^0-9]', ' ' )
s = mw.text.trim( s )
s = mw.text.split( s, ' ' )[1]
return tonumber( s )
end
-- Get year value from string.
function p.year( frame )
local n = nil
local cat = frame.args['cat']
-- 'году' or 'года'
local yearForm = 'il'
if frame.args['form'] and frame.args['form'] ~= '' then
yearForm = frame.args['form']
end
local s = frame.args[1]
s = string.gsub( s, '<[^<>]+>', '' ) -- strip HTML tags
local isBce = string.match( s, 'e.ə' )
s = string.gsub( s, 'e.ə', '' )
s = string.gsub( s, 'e.ə', '' )
-- Get first 3- or 4-digit integer number from string.
local sParts = string.gsub( s, '[^0-9]', ' ' )
sParts = mw.text.trim( sParts )
sParts = mw.text.split( sParts, ' +' )
for k = #sParts, 1, -1 do
v = sParts[k]
if string.match( v, '^[12]%d%d%d$' ) then
n = tonumber( v )
break
end
end
-- The entire string is a number.
if not n then
s = string.gsub( s, '[%[%]]', '' )
s = mw.text.trim( s )
if string.match( s, '^%d%d?%d?%d?$' ) then
n = tonumber( s )
end
end
-- Generate category
if n then
if isBce then
if cat then
return '[[К:' .. cat .. ' e.ə ' .. n .. ' ' .. yearForm .. ' ]]'
end
n = -n
else
if cat then
return '[[К:' .. cat .. ' ' .. n .. ' ' .. yearForm .. ']]'
end
end
end
return n or frame.args['default']
end
return p