Модул:Math/tonumber
Этот модуль содержит функции для конвертации строк в числа.
Функсияҳои фарохондашуда
вироишinteger
вироиш{{#invoke:math/tonumber|integer|…}}
Возвращает первое целое положительное число, найденное в строке.
Маънои вурудӣ | Натиҷа |
---|---|
2014 | 2014 |
[[2014]] | 2014 |
[[соли 2014|2014]] | 2014 |
[[31 декабр]]и [[2014]] | 31 |
Як-42 | 42 |
Используется в шаблонах, когда надо.
year
вироишВозвращает первое 3- или 4-значное целое положительное число, найденное в строке.
{{#invoke:math/tonumber|year|…}} {{#invoke:math/tonumber|year|…|default=…}}
Маънои вурудӣ | Натиҷа |
---|---|
2014 | 2014 |
910 | 910 |
[[2014]] | 2014 |
[[соли 2014|2014]] | 2014 |
[[31 декабр]]и [[2014]] | 2014 |
Як-42 | |
[[соли 2316 то м.]] | -2316 |
Дар шаблонҳои {{Гурӯҳ аз рӯи сана}} ва {{Год появления}} истифода мешавад.
Санҷишҳо
вироиш2 тестов провалено.
test_integer:
test_year:
--[[
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 Wikidata quantity.
function p.quantity( frame )
local s = frame.args[1]
s = string.gsub( s, ' ', '' )
s = string.gsub( s, '±.*$', '' )
return tonumber( s )
end
-- Get year value from string.
function p.year( frame )
local n = nil
local cat = frame.args['cat']
-- 'соли'
local yearForm = 'соли'
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, 'то\.%s?м' )
s = string.gsub( s, 'соли%sто\.%s*м\.?', '' )
s = string.gsub( s, 'то\.%s*м\.?', '' )
-- 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, v in pairs( sParts ) do
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 .. ' ' .. yearForm .. ' то м. ' .. n .. ']]'
end
n = -n
else
if cat then
return '[[Гурӯҳ:' .. cat .. ' ' .. yearForm .. ' ' .. n .. ']]'
end
end
end
return n or frame.args['default']
end
return p