chrono-node
Advanced tools
Comparing version 2.1.8 to 2.1.9
@@ -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); |
"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 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
694962
321
15931