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:Duration
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!
local p = {} function p._error( error_str ) return '[[Category:Duration with input error]]<strong class="error">Error in Module:Duration: ' .. error_str .. '</strong>' end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = {'Template:Duration', 'Template:Duration/sandbox'}}) local tmp = args.duration or args[1] or '' local duration = {} if tonumber(args[1]) or args[2] or args[3] then if args[4] then return p._error('Parameter number 4 should not be specified') end if not args[1] or args[1] == '' then duration = {args[2] or 0, args[3] or 0} else duration = {args[1], args[2] or 0, args[3] or 0} end tmp = nil for k, v in ipairs(duration) do duration[k] = tonumber(v) if not duration[k] then return p._error('Invalid values') end end elseif args.h or args.m or args.s then if not args.h or args.h == '' then duration = {args.m or 0, args.s or 0} else duration = {args.h, args.m or 0, args.s or 0} end tmp = nil for k, v in ipairs(duration) do duration[k] = tonumber(v) if not duration[k] then return p._error('Invalid values') end end else if mw.ustring.find(tmp, 'class="duration"', 1, yes) then return tmp end -- if there is already a microformat, don't do anything duration = mw.text.split(mw.ustring.match(tmp, '%d*:?%d+:%d+%.?%d*') or '', ':') -- split into table if duration[4] then return p._error('Maximum of two colons allowed') end for k, v in ipairs(duration) do duration[k] = tonumber(v) or 0 end -- convert values to numbers end if duration[3] then if (duration[1] + duration[2] + duration[3]) == 0 then return nil end if (duration[1] ~= math.ceil(duration[1])) or (duration[2] ~= math.ceil(duration[2])) then return p._error('Hours and minutes values must be integers') end if duration[3] >= 60 then return p._error('Seconds value must be less than 60') end if duration[2] >= 60 then return p._error('Minutes value must be less than 60 if hours value is specified') end if duration[2] < 10 then duration[2] = '0'..duration[2] end -- zero padding if duration[3] < 10 then duration[3] = '0'..duration[3] end duration = '<span class="duration"><span class="h">' .. duration[1] .. '</span>:<span class="min">' .. duration[2] .. '</span>:<span class="s">' .. duration[3] .. '</span></span>' elseif duration[2] then if (duration[1] + duration[2]) == 0 then return nil end if duration[1] ~= math.ceil(duration[1]) then return p._error('Hours and minutes values must be integers') end if duration[2] >= 60 then return p._error('Seconds value must be less than 60') end if duration[2] < 10 then duration[2] = '0'..duration[2] end -- zero padding duration = '<span class="duration"><span class="min">' .. duration[1] .. '</span>:<span class="s">' .. duration[2] .. '</span></span>' else duration = '' end if tmp and tmp ~= '' then if duration ~= '' then tmp = mw.ustring.gsub(tmp, '%d*:?%d+:%d+%.?%d*', duration, 1) else tmp = tmp .. ' [[Category:Duration without hAudio microformat]]' end else if duration ~= '' then tmp = duration end end return tmp end return p
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:((
(
edit
)
Template:))
(
edit
)
Template:Clc
(
edit
)
Template:High-use
(
edit
)
Template:Module other
(
edit
)
Template:Module rating
(
edit
)
Template:Ombox
(
edit
)
Template:Para
(
edit
)
Template:Tl
(
edit
)
Module:Arguments
(
edit
)
Module:Duration/doc
(
edit
)
Module:Message box
(
edit
)
Module:Message box/configuration
(
edit
)
Module:Message box/ombox.css
(
edit
)
Module:Yesno
(
edit
)