Skip to content

Commit

Permalink
Merge branch 'master' of github.com:openlayers/openlayers
Browse files Browse the repository at this point in the history
  • Loading branch information
tschaub committed Apr 17, 2012
2 parents f70b500 + ce18994 commit bce40d9
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
10 changes: 9 additions & 1 deletion lib/OpenLayers/BaseTypes/Date.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@
*/
OpenLayers.Date = {

/**
* APIProperty: dateRegEx
* The regex to be used for validating dates. You can provide your own
* regex for instance for adding support for years before BC. Default
* value is: /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/
*/
dateRegEx: /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/,

/**
* APIMethod: toISOString
* Generates a string representing a date. The format of the string follows
Expand Down Expand Up @@ -91,7 +99,7 @@ OpenLayers.Date = {
*/
parse: function(str) {
var date;
var match = str.match(/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/);
var match = str.match(this.dateRegEx);
if (match && (match[1] || match[7])) { // must have at least year or time
var year = parseInt(match[1], 10) || 0;
var month = (parseInt(match[2], 10) - 1) || 0;
Expand Down
9 changes: 9 additions & 0 deletions tests/BaseTypes/Date.html
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,15 @@
t.ok(isNaN(invalid.getTime()), "invalid has no time");
}

function test_regex(t) {
t.plan(1);
var regex = OpenLayers.Date.dateRegEx;
OpenLayers.Date.dateRegEx = /^(?:(-?\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/;
var date = OpenLayers.Date.parse("-0501-03-01T00:00:00.000Z");
t.ok(!isNaN(date.getTime()), "date with negative year is parsed when providing alternative regex");
OpenLayers.Date.dateRegEx = regex;
}

</script>
</head>
<body>
Expand Down

0 comments on commit bce40d9

Please sign in to comment.