Open main menu
Home
Random
Donate
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Convert/helper
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
-- This module provides some functions to prepare template parameters -- for use with Template:Convert. -- This module is not used by Template:Convert or 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[1]) or '' if text == '' or tonumber(text) then return text end return mw.text.killMarkers(text):gsub(',', '') end -- 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[1]) 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 'ΒΎ'. local fractions = { ['Β½'] = '1/2', ['β '] = '1/3', ['β '] = '2/3', ['ΒΌ'] = '1/4', ['ΒΎ'] = '3/4', ['β '] = '1/8', ['β '] = '3/8', ['β '] = '5/8', ['β '] = '7/8', } integer, rest = text:match('^(%d*)%s*(.*)') local expand = fractions[rest] if expand then return (integer == '' and integer or (integer .. '+')) .. expand end return text end return { number = number, cleanNumber = cleanNumber, }
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Tl
(
edit
)
Module:Convert/helper
(
edit
)
Module:Convert/helper/doc
(
edit
)