Anda dapat membuat halaman dokumentasi untuk buat pada modul Scribunto ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
localp={} functionp._error(error_str) return'[[Kategori:Durasi dengan kesalahan input]]<strong class="error">Galat pada Module:Hms: '..error_str..'</strong>' end functionp.main(frame) localargs=require('Module:Arguments').getArgs(frame,{wrappers={'Template:Duration','Template:Duration/sandbox'}}) localtmp=args.durationorargs[1]or'' localduration={} iftonumber(args[1])orargs[2]orargs[3]then ifargs[4]thenreturnp._error('Parameter nomor 4 tidak boleh ditentukan')end ifnotargs[1]orargs[1]==''then duration={args[2]or0,args[3]or0} else duration={args[1],args[2]or0,args[3]or0} end tmp=nil fork,vinipairs(duration)do duration[k]=tonumber(v) ifnotduration[k]thenreturnp._error('Nilai tidak sah')end end elseifargs.horargs.morargs.sthen ifnotargs.horargs.h==''then duration={args.mor0,args.sor0} else duration={args.h,args.mor0,args.sor0} end tmp=nil fork,vinipairs(duration)do duration[k]=tonumber(v) ifnotduration[k]thenreturnp._error('Nilai tidak sah')end end else ifmw.ustring.find(tmp,'class="duration"',1,yes)thenreturntmpend-- 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 ifduration[4]thenreturnp._error('Maksimal hanya dua kolon yang diperbolehkan')end fork,vinipairs(duration)doduration[k]=tonumber(v)or0end-- convert values to numbers end ifduration[3]then if(duration[1]+duration[2]+duration[3])==0thenreturnnilend if(duration[1]~=math.ceil(duration[1]))or(duration[2]~=math.ceil(duration[2]))thenreturnp._error('Hours and minutes values must be integers')end ifduration[3]>=60thenreturnp._error('Nilai detik harus kurang dari 60')end ifduration[2]>=60thenreturnp._error('Nilai menit harus kurang dari 60 jika nilai jam ditentukan')end ifduration[2]<10thenduration[2]='0'..duration[2]end-- zero padding ifduration[3]<10thenduration[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>' elseifduration[2]then if(duration[1]+duration[2])==0thenreturnnilend ifduration[1]~=math.ceil(duration[1])thenreturnp._error('Nilai jam dan menit harus berupa integer')end ifduration[2]>=60thenreturnp._error('Nilai detik harus kurang dari 60')end ifduration[2]<10thenduration[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 iftmpandtmp~=''then ifduration~=''thentmp=mw.ustring.gsub(tmp,'%d*:?%d+:%d+%.?%d*',duration,1)elsetmp=tmp..' [[Kategori:Durasi tanpa format mikro hAudio]]'end else ifduration~=''thentmp=durationend end returntmp end returnp