chrono-node
Advanced tools
Comparing version
@@ -10,3 +10,3 @@ { | ||
"license": "MIT", | ||
"version": "1.0.2", | ||
"version": "1.0.3", | ||
"directories": { | ||
@@ -19,2 +19,4 @@ "source": "./src", | ||
"browserify": "^6.3.3", | ||
"coveralls": "^2.11.2", | ||
"istanbul": "^0.3.5", | ||
"karma": "~0.10.4", | ||
@@ -26,5 +28,3 @@ "karma-browserify": "^1.0.0", | ||
"minifyify": "^4.4.0", | ||
"qunit": "^0.7.5", | ||
"qunitjs": "~1.14.0", | ||
"uglify-js": "~2.4.1", | ||
"qunit": "git://github.com/wanasit/node-qunit.git", | ||
"watchify": "^2.1.1" | ||
@@ -38,3 +38,4 @@ }, | ||
"karma": "karma start", | ||
"test": "qunit -c chrono:src/chrono.js -t test-qunit/*.js" | ||
"test": "qunit -c chrono:src/chrono.js -p src -t test-qunit/*.js --cov", | ||
"coveralls": "npm run test && cat coverage/lcov.info | coveralls" | ||
}, | ||
@@ -41,0 +42,0 @@ "dependencies": { |
Chrono | ||
====== | ||
A natural language date parser in Javascript, designed for extracting date information from any given text. (Java version is also available [here](https://github.com/wanasit/chrono-java)) | ||
[](https://travis-ci.org/wanasit/chrono) | ||
[](https://coveralls.io/r/wanasit/chrono?branch=master) | ||
Chrono supports most date and time formats, such as : | ||
@@ -7,0 +9,0 @@ |
@@ -18,3 +18,3 @@ /* | ||
+ '([0-9]{1,2}):([0-9]{1,2})' // hh:mm | ||
+ '(?::([0-9]{1,2})(?:\\.\\d{1,4})?)?' // :ss.s | ||
+ '(?::([0-9]{1,2})(?:\\.(\\d{1,4}))?)?' // :ss.s | ||
+ '(?:Z|([+-]\\d{2}):?(\\d{2})?)' // TZD (Z or ±hh:mm or ±hhmm or ±hh) | ||
@@ -30,4 +30,5 @@ + ')?' //.. | ||
var SECOND_NUMBER_GROUP = 7; | ||
var TZD_HOUR_OFFSET_GROUP = 8; | ||
var TZD_MINUTE_OFFSET_GROUP = 9; | ||
var MILLISECOND_NUMBER_GROUP = 8; | ||
var TZD_HOUR_OFFSET_GROUP = 9; | ||
var TZD_MINUTE_OFFSET_GROUP = 10; | ||
@@ -72,2 +73,8 @@ exports.Parser = function ENISOFormatParser(){ | ||
if (match[MILLISECOND_NUMBER_GROUP] != null) { | ||
result.start.assign('millisecond', | ||
parseInt(match[MILLISECOND_NUMBER_GROUP])); | ||
} | ||
if (match[TZD_HOUR_OFFSET_GROUP] == null) { | ||
@@ -74,0 +81,0 @@ |
@@ -74,5 +74,5 @@ /* | ||
if (match[ERA_GROUP] == '平成') { | ||
year += 1989; | ||
year += 1988; | ||
} else if (match[ERA_GROUP] == '昭和') { | ||
year += 1926; | ||
year += 1925; | ||
} | ||
@@ -79,0 +79,0 @@ |
@@ -12,3 +12,3 @@ /* | ||
if (result.text.replace(' ','').match(/^\d*\.\d*$/)) { | ||
if (result.text.replace(' ','').match(/^\d*(\.\d*)?$/)) { | ||
return false; | ||
@@ -15,0 +15,0 @@ } |
@@ -48,2 +48,3 @@ var moment = require('moment'); | ||
this.imply('second', 0); | ||
this.imply('millisecond', 0); | ||
} | ||
@@ -87,3 +88,4 @@ | ||
dateMoment.set('second', this.get('second')); | ||
dateMoment.set('millisecond', this.get('millisecond')); | ||
// Javascript Date Object return minus timezone offset | ||
@@ -90,0 +92,0 @@ var currentTimezoneOffset = -new Date().getTimezoneOffset(); |
@@ -24,2 +24,4 @@ | ||
ok(result.start.isCertain('minute')) | ||
ok(!result.start.isCertain('second')) | ||
ok(!result.start.isCertain('millisecond')) | ||
@@ -43,4 +45,7 @@ var resultDate = result.start.date(); | ||
ok(result.start.get('minute') == 10, 'Test Result - (Day) ' + JSON.stringify(result.start) ) | ||
ok(!result.start.isCertain('second')) | ||
ok(!result.start.isCertain('millisecond')) | ||
var resultDate = result.start.date(); | ||
var resultDate = result.start.date(); | ||
var expectDate = new Date(2012, 7, 10, 20, 10); | ||
@@ -62,4 +67,7 @@ ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) | ||
ok(result.start.get('minute') == 30, 'Test Result - (Day) ' + JSON.stringify(result.start) ) | ||
ok(!result.start.isCertain('second')) | ||
ok(!result.start.isCertain('millisecond')) | ||
var resultDate = result.start.date(); | ||
var resultDate = result.start.date(); | ||
var expectDate = new Date(2012, 7, 10, 12, 30); | ||
@@ -112,2 +120,4 @@ ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) | ||
ok(result.start.isCertain('minute')) | ||
ok(!result.start.isCertain('second')) | ||
ok(!result.start.isCertain('millisecond')) | ||
@@ -127,2 +137,4 @@ var resultDate = result.start.date(); | ||
ok(result.end.isCertain('minute')) | ||
ok(!result.end.isCertain('second')) | ||
ok(!result.end.isCertain('millisecond')) | ||
@@ -153,5 +165,5 @@ var resultDate = result.end.date(); | ||
ok(result.end, JSON.stringify(result.start) ) | ||
ok(result.end.get('hour') == 23, 'Test Result - (Day) ' + JSON.stringify(result.start) ) | ||
ok(result.end.get('minute') == 0, 'Test Result - (Day) ' + JSON.stringify(result.start) ) | ||
ok(result.end.get('meridiem') == 1, 'Test Result - (Day) ' + JSON.stringify(result.start)) | ||
ok(result.end.get('hour') == 23, 'Test Result - (Day) ' + JSON.stringify(result.end) ) | ||
ok(result.end.get('minute') == 0, 'Test Result - (Day) ' + JSON.stringify(result.end) ) | ||
ok(result.end.get('meridiem') == 1, 'Test Result - (Day) ' + JSON.stringify(result.end) ) | ||
@@ -196,2 +208,5 @@ var resultDate = result.end.date(); | ||
ok(result.start.get('minute') == 0, 'Test Result - (minute) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('second') == 0, 'Test Result - (second) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('millisecond') == 0, 'Test Result - (millisecond) ' + JSON.stringify(result.start) ) | ||
ok(!result.start.isCertain('millisecond')) | ||
@@ -217,3 +232,5 @@ var resultDate = result.start.date(); | ||
ok(result.start.get('minute') == 12, 'Test Result - (minute) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('second') == 59, 'Test Result - (minute) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('second') == 59, 'Test Result - (second) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('millisecond') == 0, 'Test Result - (millisecond) ' + JSON.stringify(result.start) ) | ||
ok(!result.start.isCertain('millisecond')) | ||
@@ -239,3 +256,6 @@ var resultDate = result.start.date(); | ||
ok(result.start.get('minute') == 0, 'Test Result - (minute) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('second') == 0, 'Test Result - (second) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('millisecond') == 0, 'Test Result - (millisecond) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('meridiem') == 0, 'Test Result - (meridiem) ' + JSON.stringify(result.start) ) | ||
ok(!result.start.isCertain('millisecond')) | ||
@@ -247,8 +267,11 @@ var resultDate = result.start.date(); | ||
ok(result.end.get('year') == 2014, 'Test Result - (Year) ' + JSON.stringify(result.start) ) | ||
ok(result.end.get('month') == 4, 'Test Result - (Month) ' + JSON.stringify(result.start) ) | ||
ok(result.end.get('day') == 18, 'Test Result - (Day) ' + JSON.stringify(result.start) ) | ||
ok(result.end.get('hour') == 8, 'Test Result - (Hour) ' + JSON.stringify(result.start) ) | ||
ok(result.end.get('minute') == 0, 'Test Result - (minute) ' + JSON.stringify(result.start) ) | ||
ok(result.end.get('meridiem') == 0, 'Test Result - (meridiem) ' + JSON.stringify(result.start) ) | ||
ok(result.end.get('year') == 2014, 'Test Result - (Year) ' + JSON.stringify(result.end) ) | ||
ok(result.end.get('month') == 4, 'Test Result - (Month) ' + JSON.stringify(result.end) ) | ||
ok(result.end.get('day') == 18, 'Test Result - (Day) ' + JSON.stringify(result.end) ) | ||
ok(result.end.get('hour') == 8, 'Test Result - (Hour) ' + JSON.stringify(result.end) ) | ||
ok(result.end.get('minute') == 0, 'Test Result - (minute) ' + JSON.stringify(result.end) ) | ||
ok(result.end.get('second') == 0, 'Test Result - (second) ' + JSON.stringify(result.end) ) | ||
ok(result.end.get('millisecond') == 0, 'Test Result - (millisecond) ' + JSON.stringify(result.end) ) | ||
ok(result.end.get('meridiem') == 0, 'Test Result - (meridiem) ' + JSON.stringify(result.end) ) | ||
ok(!result.end.isCertain('millisecond')) | ||
@@ -255,0 +278,0 @@ var resultDate = result.end.date(); |
@@ -35,3 +35,3 @@ | ||
ok(result.text == text, result.text); | ||
ok(Math.abs(expect.getTime() - result.start.date().getTime()) <= 1000) | ||
ok(Math.abs(expect.getTime() - result.start.date().getTime()) == 0) | ||
}); | ||
@@ -97,2 +97,6 @@ | ||
var text = ' 3' | ||
var results = chrono.parse(text); | ||
ok(results.length == 0, JSON.stringify(results) ) | ||
var text = ' 0.5 ' | ||
@@ -99,0 +103,0 @@ var results = chrono.parse(text); |
@@ -43,2 +43,61 @@ | ||
} | ||
var text = "主な株主(9月3日現在)"; | ||
var results = chrono.parse(text, new Date(2012,8-1,10)); | ||
ok(results.length == 1, JSON.stringify( results ) ) | ||
var result = results[0]; | ||
if (result) { | ||
ok(result.index == 5, 'Wrong index') | ||
ok(result.text == '9月3日', result.text ) | ||
ok(result.start, JSON.stringify(result.start) ) | ||
ok(result.start.get('year') == 2012, 'Test Result - (Year) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('month') == 9, 'Test Result - (Month) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('day') == 3, 'Test Result - (Day) ' + JSON.stringify(result.start) ) | ||
var resultDate = result.start.date(); | ||
var expectDate = new Date(2012, 9-1, 3, 12); | ||
ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) | ||
} | ||
var text = "主な株主(平成26年12月29日)"; | ||
var results = chrono.parse(text, new Date(2012,8-1,10)); | ||
ok(results.length == 1, JSON.stringify( results ) ) | ||
var result = results[0]; | ||
if (result) { | ||
ok(result.index == 5, 'Wrong index') | ||
ok(result.text == '平成26年12月29日', result.text ) | ||
ok(result.start, JSON.stringify(result.start) ) | ||
ok(result.start.get('year') == 2014, 'Test Result - (Year) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('month') == 12, 'Test Result - (Month) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('day') == 29, 'Test Result - (Day) ' + JSON.stringify(result.start) ) | ||
var resultDate = result.start.date(); | ||
var expectDate = new Date(2014, 12-1, 29, 12); | ||
ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) | ||
} | ||
var text = "主な株主(昭和64年1月7日)"; | ||
var results = chrono.parse(text, new Date(2012,8-1,10)); | ||
ok(results.length == 1, JSON.stringify( results ) ) | ||
var result = results[0]; | ||
if (result) { | ||
ok(result.index == 5, 'Wrong index') | ||
ok(result.text == '昭和64年1月7日', result.text ) | ||
ok(result.start, JSON.stringify(result.start) ) | ||
ok(result.start.get('year') == 1989, 'Test Result - (Year) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('month') == 1, 'Test Result - (Month) ' + JSON.stringify(result.start) ) | ||
ok(result.start.get('day') == 7, 'Test Result - (Day) ' + JSON.stringify(result.start) ) | ||
var resultDate = result.start.date(); | ||
var expectDate = new Date(1989, 1-1, 7, 12); | ||
ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) | ||
} | ||
}); | ||
@@ -45,0 +104,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
1996403
157.69%96
71.43%22014
118.07%180
1.12%