Skip to content

Commit 86d5ffc

Browse files
committed
added: value type parser - strict date parsing option
1 parent 80dd32b commit 86d5ffc

10 files changed

Lines changed: 44 additions & 32 deletions

ne-modules-all.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4938,10 +4938,11 @@ angular.module('neQuery',['neLocal','neObject'])
49384938
};
49394939
}])
49404940
.constant('neQueryConfig', {
4941-
useRegexBracketsWrap: false
4941+
useRegexBracketsWrap: false,
4942+
useStrictDateParser: true // matches only full date-time format like: 2018-03-13T23:00:00.000Z
49424943
})
49434944
.factory('NeQuery',['neLocal','neObject', 'neQueryConfig', function(local, object, queryConfig){
4944-
4945+
49454946
var templates = {
49464947
query: 'neQuery/query.html',
49474948
sort: 'neQuery/sort.html',
@@ -5256,6 +5257,8 @@ angular.module('neQuery',['neLocal','neObject'])
52565257

52575258
// date parse regex
52585259
var regexIso8601 = /^(\d{4}|\+\d{6})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2})\.(\d{1,})(Z|([\-+])(\d{2}):(\d{2}))?)?)?)?$/;
5260+
var regexIsoStrict = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/;
5261+
52595262
function parseValueType(value){
52605263
var type, match, milliseconds;
52615264

@@ -5266,7 +5269,7 @@ angular.module('neQuery',['neLocal','neObject'])
52665269
else type = 'datetime';
52675270
}
52685271
else if(typeof value==='string') {
5269-
match = value.match(regexIso8601);
5272+
match = value.match(queryConfig.useStrictDateParser ? regexIsoStrict : regexIso8601);
52705273
if(match) milliseconds = Date.parse(match[0]);
52715274
if (!isNaN(milliseconds)) {
52725275
value = new Date(milliseconds);

ne-modules-all.min.js

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ne-modules-all.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ne-modules-ui.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4938,10 +4938,11 @@ angular.module('neQuery',['neLocal','neObject'])
49384938
};
49394939
}])
49404940
.constant('neQueryConfig', {
4941-
useRegexBracketsWrap: false
4941+
useRegexBracketsWrap: false,
4942+
useStrictDateParser: true // matches only full date-time format like: 2018-03-13T23:00:00.000Z
49424943
})
49434944
.factory('NeQuery',['neLocal','neObject', 'neQueryConfig', function(local, object, queryConfig){
4944-
4945+
49454946
var templates = {
49464947
query: 'neQuery/query.html',
49474948
sort: 'neQuery/sort.html',
@@ -5256,6 +5257,8 @@ angular.module('neQuery',['neLocal','neObject'])
52565257

52575258
// date parse regex
52585259
var regexIso8601 = /^(\d{4}|\+\d{6})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2})\.(\d{1,})(Z|([\-+])(\d{2}):(\d{2}))?)?)?)?$/;
5260+
var regexIsoStrict = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/;
5261+
52595262
function parseValueType(value){
52605263
var type, match, milliseconds;
52615264

@@ -5266,7 +5269,7 @@ angular.module('neQuery',['neLocal','neObject'])
52665269
else type = 'datetime';
52675270
}
52685271
else if(typeof value==='string') {
5269-
match = value.match(regexIso8601);
5272+
match = value.match(queryConfig.useStrictDateParser ? regexIsoStrict : regexIso8601);
52705273
if(match) milliseconds = Date.parse(match[0]);
52715274
if (!isNaN(milliseconds)) {
52725275
value = new Date(milliseconds);

ne-modules-ui.min.js

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ne-modules-ui.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ne-modules.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4938,10 +4938,11 @@ angular.module('neQuery',['neLocal','neObject'])
49384938
};
49394939
}])
49404940
.constant('neQueryConfig', {
4941-
useRegexBracketsWrap: false
4941+
useRegexBracketsWrap: false,
4942+
useStrictDateParser: true // matches only full date-time format like: 2018-03-13T23:00:00.000Z
49424943
})
49434944
.factory('NeQuery',['neLocal','neObject', 'neQueryConfig', function(local, object, queryConfig){
4944-
4945+
49454946
var templates = {
49464947
query: 'neQuery/query.html',
49474948
sort: 'neQuery/sort.html',
@@ -5256,6 +5257,8 @@ angular.module('neQuery',['neLocal','neObject'])
52565257

52575258
// date parse regex
52585259
var regexIso8601 = /^(\d{4}|\+\d{6})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2})\.(\d{1,})(Z|([\-+])(\d{2}):(\d{2}))?)?)?)?$/;
5260+
var regexIsoStrict = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/;
5261+
52595262
function parseValueType(value){
52605263
var type, match, milliseconds;
52615264

@@ -5266,7 +5269,7 @@ angular.module('neQuery',['neLocal','neObject'])
52665269
else type = 'datetime';
52675270
}
52685271
else if(typeof value==='string') {
5269-
match = value.match(regexIso8601);
5272+
match = value.match(queryConfig.useStrictDateParser ? regexIsoStrict : regexIso8601);
52705273
if(match) milliseconds = Date.parse(match[0]);
52715274
if (!isNaN(milliseconds)) {
52725275
value = new Date(milliseconds);

ne-modules.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ne-modules.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ne-query.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -305,10 +305,11 @@ angular.module('neQuery',['neLocal','neObject'])
305305
};
306306
}])
307307
.constant('neQueryConfig', {
308-
useRegexBracketsWrap: false
308+
useRegexBracketsWrap: false,
309+
useStrictDateParser: true // matches only full date-time format like: 2018-03-13T23:00:00.000Z
309310
})
310311
.factory('NeQuery',['neLocal','neObject', 'neQueryConfig', function(local, object, queryConfig){
311-
312+
312313
var templates = {
313314
query: 'neQuery/query.html',
314315
sort: 'neQuery/sort.html',
@@ -623,6 +624,8 @@ angular.module('neQuery',['neLocal','neObject'])
623624

624625
// date parse regex
625626
var regexIso8601 = /^(\d{4}|\+\d{6})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2})\.(\d{1,})(Z|([\-+])(\d{2}):(\d{2}))?)?)?)?$/;
627+
var regexIsoStrict = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/;
628+
626629
function parseValueType(value){
627630
var type, match, milliseconds;
628631

@@ -633,7 +636,7 @@ angular.module('neQuery',['neLocal','neObject'])
633636
else type = 'datetime';
634637
}
635638
else if(typeof value==='string') {
636-
match = value.match(regexIso8601);
639+
match = value.match(queryConfig.useStrictDateParser ? regexIsoStrict : regexIso8601);
637640
if(match) milliseconds = Date.parse(match[0]);
638641
if (!isNaN(milliseconds)) {
639642
value = new Date(milliseconds);

0 commit comments

Comments
 (0)