Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

chrono-node

Package Overview
Dependencies
Maintainers
1
Versions
107
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

chrono-node - npm Package Compare versions

Comparing version 0.1.8 to 0.1.10

.Rhistory

18

chrono.js

@@ -26,6 +26,14 @@ // chrono.js

chrono.parse = function(text, referrenceDate) {
chrono.parse = function(text, referrenceDate, option) {
var results = this.integratedParse(text, referrenceDate);
var results = this.integratedRefine(text, results);
option = option || {}
if(typeof(referrenceDate) === 'string'){
var _ref = moment(referrenceDate).zone(referrenceDate);
option.timezoneOffset = _ref.zone();
referrenceDate = _ref.toDate();
}
var results = this.integratedParse(text, referrenceDate, option);
var results = this.integratedRefine(text, results, option);

@@ -45,3 +53,3 @@ return results;

//Browser Code
var moment = moment || window.moment;
moment = moment || window.moment;
window.chrono = chrono;

@@ -51,4 +59,4 @@ }

//Node JS
if(typeof moment == 'undefined') eval("var moment = require('./moment');");
var fs = require('fs');
var moment = require('./moment');

@@ -55,0 +63,0 @@ function loadModuleDirs(dir){

@@ -9,5 +9,5 @@ {

},
"version": "0.1.8",
"version": "0.1.10",
"directories": {
"improvers": "./improvers",
"refiners": "./refiners",
"parsers": "./parsers",

@@ -14,0 +14,0 @@ "test-nodeunit": "./test-nodeunit",

/*
*/
(function () {
if(typeof chrono == 'undefined')
throw 'Cannot find the chrono main module';
var PATTERN = /([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4}|[0-9]{2})(\W|$)/i;
/**

@@ -19,14 +19,14 @@ * InternationalStandartParser - Create a parser object

* @param { Object, Optional } opt - Parsing option
* @return { CNParser }
* @return { CNParser }
*/
function DEAllNumericFormParser(text, ref, opt){
opt = opt || {};
ref = ref || new Date();
var parser = chrono.Parser(text, ref, opt);
parser.pattern = function() { return PATTERN; }
parser.extract = function(text,index){
parser.extract = function(text,index){
var matchedTokens = text.substr(index).match(PATTERN);

@@ -40,3 +40,3 @@ if(matchedTokens == null){

text = matchedTokens[0].substr(0, matchedTokens[0].length - matchedTokens[4].length);
var days = parseInt(matchedTokens[1]);

@@ -46,7 +46,7 @@ var months = parseInt(matchedTokens[2]) - 1; //JS month

if(years < 100){
if(years < 100){
if(years > 50) years = years + 1900; //01 - 20
else years = years + 2000;
}
var date = moment([years, months, days]);

@@ -56,6 +56,5 @@

if(date.date() != days || date.month() != months || date.year() != years){
console.log('out')
return null;
}
}
return new chrono.ParseResult({

@@ -73,8 +72,7 @@ referenceDate:ref,

};
return parser;
}
chrono.parsers.DEAllNumericFormParser = DEAllNumericFormParser;
})();

@@ -16,11 +16,2 @@ /*

/**
* DayOfWeekParser - Create a parser object
*
* @param { String } text - Orginal text to be parsed
* @param { Date, Optional } ref - Referenced date
* @param { Object, Optional } opt - Parsing option
* @return { CNParser }
*/
function DayOfWeekParser(text, ref, opt){

@@ -27,0 +18,0 @@

@@ -13,10 +13,2 @@ /*

/**
* GeneralDateParser - Create a parser object
*
* @param { String } text - Orginal text to be parsed
* @param { Date, Optional } ref - Referenced date
* @param { Object, Optional } opt - Parsing option
* @return { CNParser }
*/
function GeneralDateParser(text, ref, opt){

@@ -42,19 +34,23 @@

var ref_moment = moment(ref);
if(opt.timezoneOffset !== undefined)
ref_moment = ref_moment.zone(opt.timezoneOffset)
var date = null;
var lowercase_text = text.toLowerCase();
if(lowercase_text == 'today' || lowercase_text == 'tonight'){
date = moment(ref).clone();
date = ref_moment.clone();
}
else if(lowercase_text == 'tomorrow'){
if(moment(ref).hour() < 4) date = moment(ref).clone().hour(6);
else date = moment(ref).clone().add('d',1);
if(ref_moment.hour() < 4) date = ref_moment.clone().hour(6);
else date = ref_moment.clone().add('d',1);
}
else if(lowercase_text == 'yesterday')
date = moment(ref).clone().add('d',-1);
date = ref_moment.clone().add('d',-1);
else if(lowercase_text.match('last'))
date = moment(ref).clone().add('d',-1);
date = ref_moment.clone().add('d',-1);
else if(lowercase_text.match('ago')){
var days_ago = matchedTokens[2];
days_ago = parseInt(days_ago);
date = moment(ref).clone().add('d',-days_ago);
date = ref_moment.clone().add('d',-days_ago);
}else{

@@ -67,3 +63,3 @@ if(full_text.charAt(index-1).match(/\d/)) return null;

impliedComponents = ['year', 'month', 'day'];
date = moment(ref).clone();
date = ref_moment.clone();
text = '';

@@ -73,3 +69,3 @@ }

var result = new chrono.ParseResult({
referenceDate:ref,
referenceDate:ref_moment.toDate(),
text:text,

@@ -76,0 +72,0 @@ index:index,

@@ -13,10 +13,2 @@ /*

/**
* InternationalStandartParser - Create a parser object
*
* @param { String } text - Orginal text to be parsed
* @param { Date, Optional } ref - Referenced date
* @param { Object, Optional } opt - Parsing option
* @return { CNParser }
*/
function InternationalStandardParser(text, ref, opt){

@@ -23,0 +15,0 @@

@@ -14,3 +14,3 @@ /*

var regPattern = /(\W|^)((Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s*,?\s*)?([0-9]{1,2})(st|nd|rd|th)?(\s*(to|\-|\s)\s*([0-9]{1,2})(st|nd|rd|th)?)?\s*(January|Jan|February|Feb|March|Mar|April|Apr|May|June|Jun|July|Jul|August|Aug|September|Sep|October|Oct|November|Nov|December|Dec)((\s*[0-9]{2,4})(\s*BE)?)?(\W|$)/i;
var regPattern = /(\W|^)((Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s*,?\s*)?([0-9]{1,2})(st|nd|rd|th)?(\s*(to|\-|\s)\s*([0-9]{1,2})(st|nd|rd|th)?)?\s*(?:of)?\s*(January|Jan|February|Feb|March|Mar|April|Apr|May|June|Jun|July|Jul|August|Aug|September|Sep|October|Oct|November|Nov|December|Dec)((\s*[0-9]{2,4})(\s*BE)?)?(\W|$)/i;

@@ -17,0 +17,0 @@ function MonthNameLittleEndianParser(text, ref, opt){

@@ -16,4 +16,3 @@ /*

opt.timezoneMap = opt.timezoneMap || this.timezoneMap;
opt.timezoneMap = opt.timezoneMap || this.timezoneMap;
var currentParserIndex = 0;

@@ -20,0 +19,0 @@ var parsers = [];

@@ -13,10 +13,2 @@ /*

/**
* GeneralDateParser - Create a parser object
*
* @param { String } text - Orginal text to be parsed
* @param { Date, Optional } ref - Referenced date
* @param { Object, Optional } opt - Parsing option
* @return { CNParser }
*/
function JPGeneralDateParser(text, ref, opt){

@@ -23,0 +15,0 @@

@@ -29,11 +29,2 @@ /*

/**
* JPStandardDateParser - Create a parser object
*
* @param { String } text - Orginal text to be parsed
* @param { Date, Optional } ref - Referenced date
* @param { Object, Optional } opt - Parsing option
* @return { CNParser }
*/
function JPStandardDateParser(text, ref, opt){

@@ -40,0 +31,0 @@

@@ -279,2 +279,3 @@ /*

}else if(hour > 100){
if(!matchedTokens[10]) return null;

@@ -341,8 +342,9 @@ minute = hour%100;

var PATTERN = /^\s*(GMT|UTC)(\+|\-)(\d{1,2})(\d{2})/;
var PATTERN = /^\s*(GMT|UTC)?(\+|\-)(\d{1,2}):?(\d{2})/;
if(text.length <= result.index + result.text.length) return null;
text = text.substr(result.index + result.text.length);
var matchedTokens = text.match(PATTERN);
if(matchedTokens){
var timezoneOffset = parseInt(matchedTokens[3])*60 + parseInt(matchedTokens[4])

@@ -441,4 +443,16 @@ var timezoneOffset = parseInt(matchedTokens[2] + timezoneOffset)*(-1);

result = resultWithTimezone || result;
if(opt.timezoneOffset){ //Fallback to opt.timezoneOffset
if(result.start.timezoneOffset === undefined){
result.start.imply('timezoneOffset', opt.timezoneOffset);
}
if(result.end && result.end.timezoneOffset === undefined){
result.end.imply('timezoneOffset', opt.timezoneOffset);
}
}
}
// Try merging overlap results

@@ -445,0 +459,0 @@ if(searchingResults.length > 0){

@@ -68,8 +68,11 @@ /*

if(this.timezoneOffset === undefined || this.timezoneOffset === null){
if(timezoneOffset === undefined || timezoneOffset === null)
timezoneOffset = new Date().getTimezoneOffset()
if(timezoneOffset === undefined || timezoneOffset === null){
timezoneOffset = this.timezoneOffset;
}else{
timezoneOffset = this.timezoneOffset;
if(this.isCertain('timezoneOffset'))
timezoneOffset = this.timezoneOffset;
}
if(timezoneOffset === undefined || timezoneOffset === null)
timezoneOffset = new Date().getTimezoneOffset()

@@ -76,0 +79,0 @@ var dateMoment = moment(new Date(this.year,this.month,this.day));

@@ -391,1 +391,30 @@ test("Test - Module Status", function() {

test("Test - Obj Instanciate 3", function() {
var _chrono = new chrono();
var result = _chrono.parseDate('Thursday', new Date(2013,11,2))
var expectDate = new Date(2013, 11, 5, 12);
ok(result.getTime() == expectDate.getTime(), result);
_chrono.refiners.PreferPastLastWeekRefiner = {
refine: function(text, results) {
results.forEach(function(result){
if(result.start.isCertain('dayOfWeek') && !result.start.isCertain('day')){
result.start.imply('day', result.start.day - 7)
}
})
return results;
}
}
var result = _chrono.parseDate('Thursday', new Date(2013,11,2))
var expectDate = new Date(2013, 10, 28, 12);
ok(result.getTime() == expectDate.getTime(), result);
});
test("Test - All-numeric form parser", function() {
var text = "Let's finish this before this 2.7.2012.";
var parser = chrono.parsers.DEAllNumericFormParser(text, new Date(2012,7,8));
ok(parser, parser)
parser.execAll();

@@ -17,3 +17,3 @@ ok(parser.results().length == 1, JSON.stringify( parser.results() ) )

ok(result.start.day == 2, 'Test Result - (Day) ' + JSON.stringify(result.start) )
ok(result.text == '2.7.2012', 'Test Result - (Text) ' + JSON.stringify(result.text) )

@@ -25,9 +25,9 @@

}
var text = "Let's finish this before this 12.1.2012.";
var parser = chrono.parsers.DEAllNumericFormParser(text, new Date(2012,7,8));
ok(parser, parser)
parser.execAll();

@@ -42,3 +42,3 @@ ok(parser.results().length == 1, JSON.stringify( parser.results() ) )

ok(result.start.day == 12, 'Test Result - (Day) ' + JSON.stringify(result.start) )
ok(result.text == '12.1.2012', 'Test Result - (Text) ' + JSON.stringify(result.text) )

@@ -55,3 +55,3 @@

ok(parser, parser)
parser.execAll();

@@ -66,3 +66,3 @@ ok(parser.results().length == 1, JSON.stringify( parser.results() ) )

ok(result.start.day == 7, 'Test Result - (Day) ' + JSON.stringify(result.start) )
ok(result.text == '07.01.03', 'Test Result - (Text) ' + JSON.stringify(result.text) )

@@ -74,3 +74,25 @@

}
var text = "Let's finish this before this 30.11.2013.";
var parser = chrono.parsers.DEAllNumericFormParser(text, new Date(2012,7,8));
ok(parser, parser)
parser.execAll();
ok(parser.results().length == 1, JSON.stringify( parser.results() ) )
var result = parser.results()[0];
if(result){
ok(result.start, JSON.stringify(result.start) )
ok(result.start.year == 2013, 'Test Result - (Year) ' + JSON.stringify(result.start) )
ok(result.start.month == 10, 'Test Result - (Month) ' + JSON.stringify(result.start) )
ok(result.start.day == 30, 'Test Result - (Day) ' + JSON.stringify(result.start) )
ok(result.text == '30.11.2013', 'Test Result - (Text) ' + JSON.stringify(result.text) )
var resultDate = (result.startDate);
var expectDate = (new Date(2013,10,30,12));
ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate)
}
});

@@ -81,7 +103,7 @@

test("Test - Month name little endian parser", function() {
var text = "Die Antwort kam am Freitag, den 12. August 2011";
var parser = chrono.parsers.DEMonthNameLittleEndianParser(text, new Date(2012,7,8));
ok(parser, parser)
parser.execAll();

@@ -96,3 +118,3 @@ ok(parser.results().length == 1, JSON.stringify( parser.results() ) )

ok(result.start.day == 12, 'Test Result - (Day) ' + JSON.stringify(result.start) )
ok(result.text == 'Freitag, den 12. August 2011', 'Test Result - (Text) ' + JSON.stringify(result.text) )

@@ -104,8 +126,8 @@

}
var text = "Die Antwort kam am Freitag, den 20. Mai.";
var parser = chrono.parsers.DEMonthNameLittleEndianParser(text, new Date(2012,7,8));
ok(parser, parser)
parser.execAll();

@@ -120,3 +142,3 @@ ok(parser.results().length == 1, JSON.stringify( parser.results() ) )

ok(result.start.day == 20, 'Test Result - (Day) ' + JSON.stringify(result.start) )
ok(result.text == 'Freitag, den 20. Mai', 'Test Result - (Text) ' + JSON.stringify(result.text) )

@@ -128,4 +150,39 @@

}
});
test("Test - Weekday parsing", function() {
var refDate = new Date(2014, 0, 3);
testWeekDayParsing("Der Termin ist diesen Montag.", refDate, 2013, 11, 30);
testWeekDayParsing("Der Termin ist nächsten Montag.", refDate, 2014, 0, 6);
testWeekDayParsing("Das wäre der nächste Montag.", refDate, 2014, 0, 6);
testWeekDayParsing("Der Termin war letzten Montag.", refDate, 2013, 11, 23);
testWeekDayParsing("Der Termin ist diesen Donnerstag.", refDate, 2014, 0, 2);
testWeekDayParsing("Der Termin ist nächsten Donnerstag.", refDate, 2014, 0, 9);
testWeekDayParsing("Das wäre der nächste Donnerstag.", refDate, 2014, 0, 9);
testWeekDayParsing("Der Termin war letzten Donnerstag.", refDate, 2013, 11, 26);
testWeekDayParsing("Der Termin ist diesen Freitag.", refDate, 2014, 0, 3);
testWeekDayParsing("Der Termin ist nächsten Freitag.", refDate, 2014, 0, 10);
testWeekDayParsing("Das wäre der nächste Freitag.", refDate, 2014, 0, 10);
testWeekDayParsing("Der Termin war letzten Freitag.", refDate, 2013, 11, 27);
});
var testWeekDayParsing = function(stringToBeParsed, referenceDate, expectedYear, expectedMonth, expectedDate) {
var parser = chrono.parsers.DEDayOfWeekParser(stringToBeParsed, referenceDate);
ok(parser, parser)
parser.execAll();
ok(parser.results().length == 1, JSON.stringify( parser.results() ) )
var result = parser.results()[0];
if(result){
ok(result.start, JSON.stringify(result.start) )
ok(result.start.year == expectedYear, 'Test Result - (Year) ' + JSON.stringify(result.start) )
ok(result.start.month == expectedMonth, 'Test Result - (Month) ' + JSON.stringify(result.start) )
ok(result.start.day == expectedDate, 'Test Result - (Day) ' + JSON.stringify(result.start) )
}
}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc