Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Usage  














Module:Duration






Afrikaans

تۆرکجه
Basa Bali

 / Bân-lâm-gú
Беларуская (тарашкевіца)

Ελληνικά
فارسی

ि
Bahasa Indonesia
Íslenska
Kurdî
Ladin
ि
Македонски

Bahasa Melayu

Norsk nynorsk
Oʻzbekcha / ўзбекча

Scots
Simple English
سنڌي
Slovenščina
Sunda
Tagalog

Тоҷикӣ
Українська
Tiếng Vit
Yorùbá


 

Edit links
 









Module
Talk
 

















Read
View source
View history
 








Tools
   


Actions  



Read
View source
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 





Permanently protected module

From Wikipedia, the free encyclopedia
 

(Redirected from Module:Hms)

This module implements {{Duration}}. It tries to add a microformat to a duration (hh:mm:ssormm:ss) whenever possible. If the module is unable to add hAudio microformat (and the input does not contain the microformat) then the page will be included in Category:Duration without hAudio microformat (2,369).

Usage

This template should normally be called through {{Duration}}, and used as {{#invoke:Duration|main|duration=duration}} when included in other templates.

Valid parameters are numbered parameters 1, 2 and 3, and unnumbered parameters |h=, |m=, |s= and |duration=. |duration= should not be used in {{Duration}}, as |1= can provide the same function.

The two triplets of parameters accept numbers as inputs (hours, minutes, seconds respectively). Only |3= and |s= can contain decimals; the others must be integers. The seconds value must not exceed 60, and the minutes value must not exceed 60 if there is an hours value. If the inputs are not recognized as numbers, an error message is returned.

|1= and |duration= accept strings. If the string contains a microformat then the string will be returned without modification. Otherwise, the module will attempt to add an hAudio microformat to the first unformatted duration found. If the string contains more than one duration, only the first one will have a microformat added.

Errors are placed in Category:Duration with input error (11).

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

Retrieved from "https://en.wikipedia.org/w/index.php?title=Module:Duration&oldid=956098223"

Category: 
Modules in beta
Hidden category: 
Wikipedia template-protected modules
 



This page was last edited on 11 May 2020, at 14:05 (UTC).

Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Mobile view



Wikimedia Foundation
Powered by MediaWiki