bugfix in Date.str2ms(..)...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2020-10-07 03:03:41 +03:00
parent a11076e19b
commit e2d477d89f
3 changed files with 31 additions and 27 deletions

21
Date.js
View File

@ -73,17 +73,24 @@ module.patchDate = function(date){
var val = parseFloat(str)
str = str.trim()
// check if a unit is given...
str = str == val ? dfl : str }
var c = /(m(illi)?(-)?s(ec(ond(s)?)?)?)$/i.test(str) ?
str = str == val ?
dfl
: str }
// NOTE: this is a small hack to avoid overcomplicating the
// pattern to still match the passed dfl unit...
str = ' '+str
var c =
(/[^a-z](m(illi)?(-)?s(ec(ond(s)?)?)?)$/i.test(str)
|| /^[0-9]*(\.[0-9]+)?$/.test(str) ) ?
1
: /s(ec(ond(s)?)?)?$/i.test(str) ?
: /[^a-z]s(ec(ond(s)?)?)?$/i.test(str) ?
1000
: /m(in(ute(s)?)?)?$/i.test(str) ?
: /[^a-z]m(in(ute(s)?)?)?$/i.test(str) ?
1000*60
: /h(our(s)?)?$/i.test(str) ?
: /[^a-z]h(our(s)?)?$/i.test(str) ?
1000*60*60
: /d(ay(s)?)?$/i.test(str) ?
: /[^a-z]d(ay(s)?)?$/i.test(str) ?
1000*60*60*24
: null

View File

@ -1,6 +1,6 @@
{
"name": "ig-types",
"version": "2.0.7",
"version": "2.0.8",
"description": "Generic JavaScript types and type extensions...",
"main": "main.js",
"scripts": {

35
test.js
View File

@ -19,6 +19,7 @@ var containers = require('./containers')
//---------------------------------------------------------------------
/*
var setups = test.Setups({
})
@ -27,6 +28,7 @@ var modifiers = test.Modifiers({
var tests = test.Tests({
})
//*/
var cases = test.Cases({
@ -67,13 +69,6 @@ var cases = test.Cases({
},
// Date.js
// - toShortDate
// - getTimeStamp
// - setTimeStamp
// - timeStamp
// - fromTimeStamp
// - str2ms
// XXX
Date: function(assert){
var d = new Date()
@ -96,19 +91,21 @@ var cases = test.Cases({
assert(a + '000' == Date.fromTimeStamp(a).getTimeStamp(true))
assert(b == Date.fromTimeStamp(b).getTimeStamp(true))
assert(Date.str2ms('1') == 1)
assert(Date.str2ms('1ms') == 1)
assert(Date.str2ms('1s') == 1000)
assert(Date.str2ms('1m') == 60*1000)
assert(Date.str2ms('1h') == 60*60*1000)
assert(Date.str2ms('1d') == 24*60*60*1000)
assert(Date.str2ms('1') == 1, 'Date.str2ms("1")')
assert(Date.str2ms(1) == 1, 'Date.str2ms(1)')
assert(Date.str2ms('1ms') == 1, 'Date.str2ms("1ms")')
assert(Date.str2ms('1s') == 1000, 'Date.str2ms("1s")')
assert(Date.str2ms('1m') == 60*1000, 'Date.str2ms("1m")')
assert(Date.str2ms('1h') == 60*60*1000, 'Date.str2ms("1h")')
assert(Date.str2ms('1d') == 24*60*60*1000, 'Date.str2ms("1d")')
assert(Date.str2ms('5 sec') == 5000)
assert(Date.str2ms('5 second') == 5000)
assert(Date.str2ms('5 seconds') == 5000)
assert(Date.str2ms('2 hour') == 2*60*60*1000)
// XXX for odd some reason this fails...
//assert(Date.str2ms('2 hours') == 2*60*60*1000)
assert(Date.str2ms('5 sec') == 5000, 'Date.str2ms("1 sec")')
assert(Date.str2ms('5 second') == 5000, 'Date.str2ms("1 second")')
assert(Date.str2ms('5 seconds') == 5000, 'Date.str2ms("1 seconds")')
assert(Date.str2ms('2hour') == 2*60*60*1000, 'Date.str2ms("1hour")')
assert(Date.str2ms('2 Hour') == 2*60*60*1000, 'Date.str2ms("1 Hour")')
assert(Date.str2ms('2 hours') == 2*60*60*1000, 'Date.str2ms("1 hours")')
},
// containers.js