This module extracts very basic numeric data from the input, namely the first match for a contiguous simple number, which may include the negative sign and a de
| This module is rated as beta. It is considered ready for widespread use, but as it is still relatively new, it should be applied with some caution to ensure results are as expected. |
| Editing of this module by new or unregistered users is currently disabled. See the protection policy and protection log for more details. If you cannot edit this module and you wish to make a change, you can submit an edit request, discuss changes on the talk page, request unprotection, log in, or create an account. |
This module extracts very basic numeric data from the input, namely the first match for a contiguous simple number, which may include the negative sign and a decimal, but not (yet) any further complexity, such as exponents, variables, etc.
Its primary function is accepting data like:
70%margin-left: 20px;75.485 Khz and return the numeric portion of it so that it can be operated on arithmetically.Results for each string, respectively:
em, px, or % to the bare-number proportions used by CSS's flex-grow declaration (only works if the units on all the cells are the same; can't handle a mixture, e.g. of a fixed-width sidebar and relative-width main content area)." and ; characters and the like).cellspacing=... to modern CSS td {padding: ...;} on all sides...=.. character, use |1= when calling the template. This never does any harm.a=70% use {{#invoke:StripToNumbers|main|1=a=70%}} →= character unless it is escaped as {{=}} or &equal;.
= that must be escaped.- (the keyboard hyphen-minus character, not the formal unicode minus −, and may contain a decimal; it throws away everything else.1.2.3 or 1-2-3, nor null; this test may well be redundant code at this point, but better safe than sorry.main function.=-style character entities that are numeric (nor their hex equivalents), for obvious reasons, only named ones like &equal;nbsp; This can be addressed in future upgrade, surely, but should be done in a separate function, as stripping such input down to the ASCII character numbers may well be the desired use in a particular instance.Basic usage:
{{#invoke:StripToNumbers | main | input }}To divide the resulting value by two:
{{#invoke:StripToNumbers | halve | input }}Same as main but returns null if no numbers in string, rather than error (can be used as contains numeric function):
{{#invoke:StripToNumbers | mainnull | input }}
local p = {}
function p.main(frame)
local theString = mw.text.unstrip(frame.args[1])
local onlyNumber
onlyNumber = (string.match(theString, "%-?[%d%.]+"))
checkedNumber = tonumber(onlyNumber)
if checkedNumber == nil then
error(" Input did not contain valid numeric data")
else
return checkedNumber
end
end
function p.halve(frame)
local checkedNumber = (p.main(frame))
local halvedNumber
halvedNumber = (checkedNumber / 2)
return halvedNumber
end
function p.mainnull(frame)
local theString = mw.text.unstrip(frame.args[1])
local onlyNumber
onlyNumber = (string.match(theString, "%-?[%d%.]+"))
checkedNumber = tonumber(onlyNumber)
if checkedNumber == nil then
return nil
else
return checkedNumber
end
end
return p
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.