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 2.1.8 to 2.1.9

dist/common/casualReferences.d.ts

3

dist/common/refiners/ExtractTimezoneAbbrRefiner.js

@@ -212,2 +212,5 @@ "use strict";

const timezoneOffset = timezones[timezoneAbbr];
context.debug(() => {
console.log(`Extracting timezone: '${timezoneAbbr}' into : ${timezoneOffset}`);
});
if (!result.start.isCertain("timezoneOffset")) {

@@ -214,0 +217,0 @@ result.start.assign("timezoneOffset", timezoneOffset);

10

dist/common/refiners/ExtractTimezoneOffsetRefiner.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const TIMEZONE_OFFSET_PATTERN = new RegExp("^\\s*(GMT|UTC)?([+-])(\\d{1,2}):?(\\d{2})", "i");
const TIMEZONE_OFFSET_SIGN_GROUP = 2;
const TIMEZONE_OFFSET_HOUR_OFFSET_GROUP = 3;
const TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP = 4;
const TIMEZONE_OFFSET_PATTERN = new RegExp("^\\s*(?:(?:GMT|UTC)\\s?)?([+-])(\\d{1,2})(?::?(\\d{2}))?", "i");
const TIMEZONE_OFFSET_SIGN_GROUP = 1;
const TIMEZONE_OFFSET_HOUR_OFFSET_GROUP = 2;
const TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP = 3;
class ExtractTimezoneOffsetRefiner {

@@ -22,3 +22,3 @@ refine(context, results) {

const hourOffset = parseInt(match[TIMEZONE_OFFSET_HOUR_OFFSET_GROUP]);
const minuteOffset = parseInt(match[TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP]);
const minuteOffset = parseInt(match[TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP] || "0");
let timezoneOffset = hourOffset * 60 + minuteOffset;

@@ -25,0 +25,0 @@ if (match[TIMEZONE_OFFSET_SIGN_GROUP] === "-") {

@@ -38,2 +38,3 @@ import { DebugHandler, DebugConsume } from "./debugging";

import * as pt from "./locales/pt";
export { de, fr, ja, pt };
import * as nl from "./locales/nl";
export { de, fr, ja, pt, nl };

@@ -22,3 +22,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.pt = exports.ja = exports.fr = exports.de = exports.Meridiem = exports.parseDate = exports.parse = exports.casual = exports.strict = exports.Chrono = exports.en = void 0;
exports.nl = exports.pt = exports.ja = exports.fr = exports.de = exports.Meridiem = exports.parseDate = exports.parse = exports.casual = exports.strict = exports.Chrono = exports.en = void 0;
const en = __importStar(require("./locales/en"));

@@ -51,1 +51,3 @@ exports.en = en;

exports.pt = pt;
const nl = __importStar(require("./locales/nl"));
exports.nl = nl;
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -10,2 +29,3 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

const DECasualTimeParser_1 = __importDefault(require("./DECasualTimeParser"));
const references = __importStar(require("../../../common/casualReferences"));
const PATTERN = new RegExp(`(jetzt|heute|morgen|übermorgen|uebermorgen|gestern|vorgestern|letzte\\s*nacht)` +

@@ -27,11 +47,6 @@ `(?:\\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht))?` +

case "jetzt":
dayjs_2.assignSimilarDate(component, targetDate);
component.assign("hour", targetDate.hour());
component.assign("minute", targetDate.minute());
component.assign("second", targetDate.second());
component.assign("millisecond", targetDate.millisecond());
component = references.now(context.refDate);
break;
case "heute":
dayjs_2.assignSimilarDate(component, targetDate);
dayjs_2.implySimilarTime(component, targetDate);
component = references.today(context.refDate);
break;

@@ -38,0 +53,0 @@ case "morgen":

@@ -11,3 +11,3 @@ "use strict";

const ENMonthNameParser_1 = __importDefault(require("./parsers/ENMonthNameParser"));
const ENSlashDateFormatStartWithYearParser_1 = __importDefault(require("./parsers/ENSlashDateFormatStartWithYearParser"));
const ENCasualYearMonthDayParser_1 = __importDefault(require("./parsers/ENCasualYearMonthDayParser"));
const ENSlashMonthFormatParser_1 = __importDefault(require("./parsers/ENSlashMonthFormatParser"));

@@ -56,3 +56,3 @@ const ENTimeExpressionParser_1 = __importDefault(require("./parsers/ENTimeExpressionParser"));

new ENWeekdayParser_1.default(),
new ENSlashDateFormatStartWithYearParser_1.default(),
new ENCasualYearMonthDayParser_1.default(),
new ENSlashMonthFormatParser_1.default(),

@@ -59,0 +59,0 @@ new ENTimeExpressionParser_1.default(),

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -7,5 +26,5 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

const dayjs_1 = __importDefault(require("dayjs"));
const index_1 = require("../../../index");
const AbstractParserWithWordBoundary_1 = require("../../../common/parsers/AbstractParserWithWordBoundary");
const dayjs_2 = require("../../../utils/dayjs");
const references = __importStar(require("../../../common/casualReferences"));
class ENCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {

@@ -21,26 +40,12 @@ innerPattern(context) {

case "now":
dayjs_2.assignSimilarDate(component, targetDate);
component.assign("hour", targetDate.hour());
component.assign("minute", targetDate.minute());
component.assign("second", targetDate.second());
component.assign("millisecond", targetDate.millisecond());
break;
return references.now(context.refDate);
case "today":
dayjs_2.assignSimilarDate(component, targetDate);
dayjs_2.implySimilarTime(component, targetDate);
break;
case "tonight":
component.imply("hour", 22);
component.imply("meridiem", index_1.Meridiem.PM);
dayjs_2.assignSimilarDate(component, targetDate);
break;
return references.today(context.refDate);
case "yesterday":
return references.yesterday(context.refDate);
case "tomorrow":
case "tmr":
dayjs_2.assignTheNextDay(component, targetDate);
break;
case "yesterday":
targetDate = targetDate.add(-1, "day");
dayjs_2.assignSimilarDate(component, targetDate);
dayjs_2.implySimilarTime(component, targetDate);
break;
return references.tomorrow(context.refDate);
case "tonight":
return references.tonight(context.refDate);
default:

@@ -47,0 +52,0 @@ if (lowerText.match(/last\s*night/)) {

@@ -8,3 +8,7 @@ "use strict";

innerPattern() {
return new RegExp(`(?:within|in)\\s*` + "(" + constants_1.TIME_UNITS_PATTERN + ")" + `(?=\\W|$)`, "i");
return new RegExp(`(?:within|in)\\s*(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?` +
"(" +
constants_1.TIME_UNITS_PATTERN +
")" +
`(?=\\W|$)`, "i");
}

@@ -11,0 +15,0 @@ innerExtract(context, match) {

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -10,2 +29,3 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

const dayjs_2 = require("../../../utils/dayjs");
const references = __importStar(require("../../../common/casualReferences"));
class FRCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {

@@ -21,17 +41,9 @@ innerPattern(context) {

case "maintenant":
dayjs_2.assignSimilarDate(component, targetDate);
dayjs_2.assignSimilarTime(component, targetDate);
break;
return references.now(context.refDate);
case "aujourd'hui":
dayjs_2.assignSimilarDate(component, targetDate);
dayjs_2.implySimilarTime(component, targetDate);
break;
return references.today(context.refDate);
case "hier":
return references.yesterday(context.refDate);
case "demain":
dayjs_2.assignTheNextDay(component, targetDate);
break;
case "hier":
targetDate = targetDate.add(-1, "day");
dayjs_2.assignSimilarDate(component, targetDate);
dayjs_2.implySimilarTime(component, targetDate);
break;
return references.tomorrow(context.refDate);
default:

@@ -38,0 +50,0 @@ if (lowerText.match(/cette\s*nuit/)) {

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -8,2 +27,3 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

const index_1 = require("../../../index");
const references = __importStar(require("../../../common/casualReferences"));
const PATTERN = /今日|当日|昨日|明日|今夜|今夕|今晩|今朝/i;

@@ -18,2 +38,11 @@ class JPCasualDateParser {

const components = context.createParsingComponents();
switch (text) {
case "昨日":
return references.yesterday(context.refDate);
case "明日":
return references.tomorrow(context.refDate);
case "今日":
case "当日":
return references.today(context.refDate);
}
if (text == "今夜" || text == "今夕" || text == "今晩") {

@@ -27,10 +56,2 @@ components.imply("hour", 22);

}
else if (text == "明日") {
if (date.hour() > 4) {
date = date.add(1, "day");
}
}
else if (text == "昨日") {
date = date.add(-1, "day");
}
components.assign("day", date.date());

@@ -37,0 +58,0 @@ components.assign("month", date.month() + 1);

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -8,3 +27,3 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

const AbstractParserWithWordBoundary_1 = require("../../../common/parsers/AbstractParserWithWordBoundary");
const dayjs_2 = require("../../../utils/dayjs");
const references = __importStar(require("../../../common/casualReferences"));
class PTCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {

@@ -20,21 +39,10 @@ innerPattern(context) {

case "agora":
dayjs_2.assignSimilarDate(component, targetDate);
component.assign("hour", targetDate.hour());
component.assign("minute", targetDate.minute());
component.assign("second", targetDate.second());
component.assign("millisecond", targetDate.millisecond());
break;
return references.now(context.refDate);
case "hoje":
dayjs_2.assignSimilarDate(component, targetDate);
dayjs_2.implySimilarTime(component, targetDate);
break;
return references.today(context.refDate);
case "amanha":
case "amanhã":
dayjs_2.assignTheNextDay(component, targetDate);
break;
return references.tomorrow(context.refDate);
case "ontem":
targetDate = targetDate.add(-1, "day");
dayjs_2.assignSimilarDate(component, targetDate);
dayjs_2.implySimilarTime(component, targetDate);
break;
return references.yesterday(context.refDate);
}

@@ -41,0 +49,0 @@ return component;

@@ -18,3 +18,3 @@ {

"license": "MIT",
"version": "2.1.8",
"version": "2.1.9",
"directories": {

@@ -21,0 +21,0 @@ "source": "./src",

@@ -40,3 +40,3 @@ # Chrono (v2)

* Chrono’s default now handles only international English. While in the previous version, it tried to parse with all known languages.
* The current supported languages are only `en` and `ja`. Other languages from v1 (`de`, `fr`, `nl`, `pt`, and `zh`) are under development.
* The current fully supported languages are `en`, `ja`, and `fr` (`de` and `pt` are partially supported). Other languages from v1 (`nl` and `zh`) are under development.

@@ -43,0 +43,0 @@ For contributors and advanced users

@@ -219,2 +219,6 @@ // Map ABBR -> Offset in minute

const timezoneOffset = timezones[timezoneAbbr];
context.debug(() => {
console.log(`Extracting timezone: '${timezoneAbbr}' into : ${timezoneOffset}`);
});
if (!result.start.isCertain("timezoneOffset")) {

@@ -221,0 +225,0 @@ result.start.assign("timezoneOffset", timezoneOffset);

@@ -1,12 +0,8 @@

/*
*/
import { ParsingContext, Refiner } from "../../chrono";
import { ParsingResult } from "../../results";
const TIMEZONE_OFFSET_PATTERN = new RegExp("^\\s*(GMT|UTC)?([+-])(\\d{1,2}):?(\\d{2})", "i");
const TIMEZONE_OFFSET_SIGN_GROUP = 2;
const TIMEZONE_OFFSET_HOUR_OFFSET_GROUP = 3;
const TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP = 4;
const TIMEZONE_OFFSET_PATTERN = new RegExp("^\\s*(?:(?:GMT|UTC)\\s?)?([+-])(\\d{1,2})(?::?(\\d{2}))?", "i");
const TIMEZONE_OFFSET_SIGN_GROUP = 1;
const TIMEZONE_OFFSET_HOUR_OFFSET_GROUP = 2;
const TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP = 3;

@@ -31,3 +27,3 @@ export default class ExtractTimezoneOffsetRefiner implements Refiner {

const hourOffset = parseInt(match[TIMEZONE_OFFSET_HOUR_OFFSET_GROUP]);
const minuteOffset = parseInt(match[TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP]);
const minuteOffset = parseInt(match[TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP] || "0");
let timezoneOffset = hourOffset * 60 + minuteOffset;

@@ -34,0 +30,0 @@ if (match[TIMEZONE_OFFSET_SIGN_GROUP] === "-") {

@@ -62,2 +62,3 @@ import { DebugHandler, DebugConsume } from "./debugging";

import * as pt from "./locales/pt";
export { de, fr, ja, pt };
import * as nl from "./locales/nl";
export { de, fr, ja, pt, nl };
import { ParsingContext } from "../../../chrono";
import { ParsingComponents, ParsingResult } from "../../../results";
import dayjs from "dayjs";
import { Meridiem } from "../../../index";
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
import { assignSimilarDate, assignTheNextDay, implySimilarTime } from "../../../utils/dayjs";
import { addImpliedTimeUnits } from "../../../utils/timeunits";
import DECasualTimeParser from "./DECasualTimeParser";
import * as references from "../../../common/casualReferences";

@@ -33,12 +32,7 @@ const PATTERN = new RegExp(

case "jetzt":
assignSimilarDate(component, targetDate);
component.assign("hour", targetDate.hour());
component.assign("minute", targetDate.minute());
component.assign("second", targetDate.second());
component.assign("millisecond", targetDate.millisecond());
component = references.now(context.refDate);
break;
case "heute":
assignSimilarDate(component, targetDate);
implySimilarTime(component, targetDate);
component = references.today(context.refDate);
break;

@@ -45,0 +39,0 @@

@@ -5,3 +5,3 @@ import ENTimeUnitWithinFormatParser from "./parsers/ENTimeUnitWithinFormatParser";

import ENMonthNameParser from "./parsers/ENMonthNameParser";
import ENSlashDateFormatStartWithYearParser from "./parsers/ENSlashDateFormatStartWithYearParser";
import ENCasualYearMonthDayParser from "./parsers/ENCasualYearMonthDayParser";
import ENSlashMonthFormatParser from "./parsers/ENSlashMonthFormatParser";

@@ -58,3 +58,3 @@ import ENTimeExpressionParser from "./parsers/ENTimeExpressionParser";

new ENWeekdayParser(),
new ENSlashDateFormatStartWithYearParser(),
new ENCasualYearMonthDayParser(),
new ENSlashMonthFormatParser(),

@@ -61,0 +61,0 @@ new ENTimeExpressionParser(),

import { ParsingContext } from "../../../chrono";
import { ParsingComponents, ParsingResult } from "../../../results";
import dayjs from "dayjs";
import { Meridiem } from "../../../index";
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
import { assignSimilarDate, assignTheNextDay, implySimilarTime } from "../../../utils/dayjs";
import { assignSimilarDate } from "../../../utils/dayjs";
import * as references from "../../../common/casualReferences";

@@ -20,30 +20,16 @@ export default class ENCasualDateParser extends AbstractParserWithWordBoundaryChecking {

case "now":
assignSimilarDate(component, targetDate);
component.assign("hour", targetDate.hour());
component.assign("minute", targetDate.minute());
component.assign("second", targetDate.second());
component.assign("millisecond", targetDate.millisecond());
break;
return references.now(context.refDate);
case "today":
assignSimilarDate(component, targetDate);
implySimilarTime(component, targetDate);
break;
return references.today(context.refDate);
case "tonight":
component.imply("hour", 22);
component.imply("meridiem", Meridiem.PM);
assignSimilarDate(component, targetDate);
break;
case "yesterday":
return references.yesterday(context.refDate);
case "tomorrow":
case "tmr":
assignTheNextDay(component, targetDate);
break;
return references.tomorrow(context.refDate);
case "yesterday":
targetDate = targetDate.add(-1, "day");
assignSimilarDate(component, targetDate);
implySimilarTime(component, targetDate);
break;
case "tonight":
return references.tonight(context.refDate);

@@ -50,0 +36,0 @@ default:

@@ -1,4 +0,3 @@

import { Parser, ParsingContext } from "../../../chrono";
import { ParsingComponents, ParsingResult } from "../../../results";
import dayjs from "dayjs";
import { ParsingContext } from "../../../chrono";
import { ParsingComponents } from "../../../results";
import { Meridiem } from "../../../index";

@@ -5,0 +4,0 @@ import { AbstractTimeExpressionParser } from "../../../common/parsers/AbstractTimeExpressionParser";

@@ -8,3 +8,10 @@ import { TIME_UNITS_PATTERN, parseTimeUnits } from "../constants";

innerPattern(): RegExp {
return new RegExp(`(?:within|in)\\s*` + "(" + TIME_UNITS_PATTERN + ")" + `(?=\\W|$)`, "i");
return new RegExp(
`(?:within|in)\\s*(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?` +
"(" +
TIME_UNITS_PATTERN +
")" +
`(?=\\W|$)`,
"i"
);
}

@@ -11,0 +18,0 @@

@@ -1,2 +0,2 @@

import { Parser, ParsingContext } from "../../../chrono";
import { ParsingContext } from "../../../chrono";
import { ParsingComponents, ParsingResult } from "../../../results";

@@ -7,2 +7,3 @@ import dayjs from "dayjs";

import { assignSimilarDate, assignSimilarTime, assignTheNextDay, implySimilarTime } from "../../../utils/dayjs";
import * as references from "../../../common/casualReferences";

@@ -21,21 +22,13 @@ export default class FRCasualDateParser extends AbstractParserWithWordBoundaryChecking {

case "maintenant":
assignSimilarDate(component, targetDate);
assignSimilarTime(component, targetDate);
break;
return references.now(context.refDate);
case "aujourd'hui":
assignSimilarDate(component, targetDate);
implySimilarTime(component, targetDate);
break;
return references.today(context.refDate);
case "hier":
return references.yesterday(context.refDate);
case "demain":
assignTheNextDay(component, targetDate);
break;
return references.tomorrow(context.refDate);
case "hier":
targetDate = targetDate.add(-1, "day");
assignSimilarDate(component, targetDate);
implySimilarTime(component, targetDate);
break;
default:

@@ -42,0 +35,0 @@ if (lowerText.match(/cette\s*nuit/)) {

import { Parser, ParsingContext } from "../../../chrono";
import dayjs from "dayjs";
import { Meridiem } from "../../../index";
import * as references from "../../../common/casualReferences";

@@ -18,2 +19,14 @@ const PATTERN = /今日|当日|昨日|明日|今夜|今夕|今晩|今朝/i;

switch (text) {
case "昨日":
return references.yesterday(context.refDate);
case "明日":
return references.tomorrow(context.refDate);
case "今日":
case "当日":
return references.today(context.refDate);
}
if (text == "今夜" || text == "今夕" || text == "今晩") {

@@ -25,9 +38,2 @@ components.imply("hour", 22);

components.assign("meridiem", Meridiem.AM);
} else if (text == "明日") {
if (date.hour() > 4) {
// Check not "Tomorrow" on late night
date = date.add(1, "day");
}
} else if (text == "昨日") {
date = date.add(-1, "day");
}

@@ -34,0 +40,0 @@

import { Parser, ParsingContext } from "../../../chrono";
import { ParsingComponents, ParsingResult } from "../../../results";
import dayjs from "dayjs";
import { Meridiem } from "../../../index";
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
import { assignSimilarDate, assignSimilarTime, assignTheNextDay, implySimilarTime } from "../../../utils/dayjs";
import * as references from "../../../common/casualReferences";

@@ -20,24 +20,13 @@ export default class PTCasualDateParser extends AbstractParserWithWordBoundaryChecking {

case "agora":
assignSimilarDate(component, targetDate);
component.assign("hour", targetDate.hour());
component.assign("minute", targetDate.minute());
component.assign("second", targetDate.second());
component.assign("millisecond", targetDate.millisecond());
break;
return references.now(context.refDate);
case "hoje":
assignSimilarDate(component, targetDate);
implySimilarTime(component, targetDate);
break;
return references.today(context.refDate);
case "amanha":
case "amanhã":
assignTheNextDay(component, targetDate);
break;
return references.tomorrow(context.refDate);
case "ontem":
targetDate = targetDate.add(-1, "day");
assignSimilarDate(component, targetDate);
implySimilarTime(component, targetDate);
break;
return references.yesterday(context.refDate);
}

@@ -44,0 +33,0 @@

@@ -141,52 +141,2 @@ import * as chrono from "../../src";

test("Test - Single Expression Start with Year", function () {
testSingleCase(chrono, "2012/8/10", new Date(2012, 7, 10), (result) => {
expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(8);
expect(result.start.get("day")).toBe(10);
expect(result.index).toBe(0);
expect(result.text).toBe("2012/8/10");
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
});
testSingleCase(chrono, "The Deadline is 2012/8/10", new Date(2012, 7, 10), (result) => {
expect(result.index).toBe(16);
expect(result.text).toBe("2012/8/10");
expect(result.start).toBeDate(new Date(2012, 7, 10, 12));
});
testSingleCase(chrono.strict, "2014/2/28", (result) => {
expect(result.text).toBe("2014/2/28");
});
testSingleCase(chrono.strict, "2014/12/28", (result) => {
expect(result.text).toBe("2014/12/28");
});
});
test("Test - Single Expression Start with Year and Month Name", function () {
testSingleCase(chrono, "2012/Aug/10", new Date(2012, 7, 10), (result) => {
expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(8);
expect(result.start.get("day")).toBe(10);
expect(result.index).toBe(0);
expect(result.text).toBe("2012/Aug/10");
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
});
testSingleCase(chrono, "The Deadline is 2012/aug/10", new Date(2012, 7, 10), (result) => {
expect(result.index).toBe(16);
expect(result.text).toBe("2012/aug/10");
expect(result.start).toBeDate(new Date(2012, 7, 10, 12));
});
});
test("Test - Range Expression", function () {

@@ -193,0 +143,0 @@ testSingleCase(chrono.en, "8/10/2012 - 8/15/2012", new Date(2012, 7, 10), (result) => {

@@ -145,2 +145,17 @@ import * as chrono from "../../src";

});
testSingleCase(chrono, "In around 5 hours", new Date(2016, 10 - 1, 1, 13), (result, text) => {
expect(result.text).toBe(text);
expect(result.start.get("year")).toBe(2016);
expect(result.start.get("month")).toBe(10);
expect(result.start.get("day")).toBe(1);
expect(result.start.get("hour")).toBe(18);
});
testSingleCase(chrono, "In about ~5 hours", new Date(2016, 10 - 1, 1, 13), (result, text) => {
expect(result.start.get("year")).toBe(2016);
expect(result.start.get("month")).toBe(10);
expect(result.start.get("day")).toBe(1);
expect(result.start.get("hour")).toBe(18);
});
});

@@ -147,0 +162,0 @@

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