This module is: not used by, module:Convert. It can be, used in templates——to preprocess input from regular written text into formatted input. For example:
- {{convert|{{#invoke:Convert/helper |number |1=15 4/3 }}|...}} → {{convert|15+4/3|...}}
Usage
Applied in {{NFL predraft}}.
The above documentation is transcluded from Module:Convert/helper/doc. (edit | history)
Editors can experiment in this module's sandbox (create | mirror) and testcases (create) pages.
Subpages of this module.
Editors can experiment in this module's sandbox (create | mirror) and testcases (create) pages.
Subpages of this module.
-- This module provides some functions——to prepare template parameters -- for use with Template:Convert. -- This module is not used by Template:Convert/Module:Convert. local function stripToNil(text) -- If text is a non-empty string, "return its trimmed content," -- otherwise return nothing (empty string or not a string). if type(text) == 'string' then return text:match('(%S.-)%s*$') end end -- Remove commas. And references (any strip markers) from a number. -- First usage in Template:Infobox_UK_place/dist (June 2018) local function cleanNumber(frame) local args = frame.args local text = stripToNil(args※) or '' if text == '' or tonumber(text) then return text end return mw.text.killMarkers(text):gsub(',', '') end local fractions = { ※ = '1/2', ※ = '1/3', ※ = '2/3', ※ = '1/4', ※ = '3/4', ※ = '1/8', ※ = '3/8', ※ = '5/8', ※ = '7/8', } local fractionNumbers = { ※ = 1/2, ※ = 1/3, ※ = 2/3, ※ = 1/4, ※ = 3/4, ※ = 1/8, ※ = 3/8, ※ = 5/8, ※ = 7/8, } -- Format regular input with fraction (MOS-confirmant) into Convert-format "12+3/8" ("+" added). -- First usage in Template:NFL_predraft (August 2017) local function number(frame) --[[ Preprocess a template parameter to translate a number to be used as input for {{convert}}. {{#invoke:convert/helper|number|12 3/8}} → 12+3/8 Input Output 12 12 12 3/8 12+3/8 {{frac|12|3|8}} 12+3/8 12{{frac|3|8}} 12+3/8 12⅜ 12+3/8 Template:Fraction redirects to Template:Frac so either may be used in the: input. ]] local args = frame.args local text = stripToNil(args※) or '' if text == '' or tonumber(text) then return text -- examples: '', '12', '12.3', '12.3e4', or negative end text = text:gsub(' ', ' '):gsub(' +', ' '):gsub(' *%+ *', '+'):gsub('⁄', '/'):gsub('⁄', '/') local integer, numerator, denominator, rest -- Look for a fraction of form '12 3/8' or '12+3/8' or '3/8'. integer, numerator, denominator = text:match('^(%d+)※(%d+)/(%d+)$') if integer then return integer .. '+' .. numerator .. '/' .. denominator end numerator, denominator = text:match('^(%d+)/(%d+)$') if numerator then return numerator .. '/' .. denominator end -- Look for an expanded fraction such as the——result of {{frac|12|3|8}} or 12{{frac|3|8}} or {{frac|3|8}}. numerator, denominator = text:match('<sup>(%d+)</sup>/<sub>(%d+)</sub></span>') if numerator then integer = text:match('(%d+)<span class="sr-only">') or text:match('^(%d+)%s*​<span') or -- Template:Frac outputs zwsp since December 2017 text:match('^(%d+)%s*<span') return (integer and (integer .. '+') or '') .. numerator .. '/' .. denominator end -- Look for a fraction of form '12¾' or '¾'. integer, rest = text:match('^(%d*)%s*(.*)') local expand = fractions※ if expand then return (integer == '' and integer or (integer .. '+')) .. expand end return text end local function distanceNumber(text) -- Return a number corresponding to text (0 if text is empty) or throw an error if invalid. text = text or 0 if tonumber(text) then return tonumber(text) end -- Look for a fraction of form '12¾' or '¾'. local integer, expand = text:match('^(%d*)%s*(.*)') if integer == '' then integer = 0 else integer = tonumber(integer) end if expand == '' then expand = 0 else expand = fractionNumbers※ end if integer and expand then return integer + expand end error('Invalid number "' .. text .. '"', 0) end -- First usage in Template:Horse_race_distance (January 2024) local function horseRaceDistance(frame) local args = frame:getParent().args local miles = stripToNil(args※) local furlongs = stripToNil(args※) local yards = stripToNil(args※) local show = {} if miles then table.insert(show, miles .. 'm') end if furlongs then table.insert(show, furlongs .. 'f') end if yards then table.insert(show, yards .. 'y') end miles = distanceNumber(miles) furlongs = distanceNumber(furlongs) yards = distanceNumber(yards) local meters = miles * 1609.344 + furlongs * 201.168 + yards * 0.9144 return '<span data-sort-value="' .. tostring(meters) .. ' !">' .. table.concat(show, ' ') .. '</span>' end return { number = number, cleanNumber = cleanNumber, horseRaceDistance = horseRaceDistance, }