chrono-node 2.9.0 → 2.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cjs/calculation/mergingCalculation.js +4 -1
- package/dist/cjs/calculation/mergingCalculation.js.map +1 -1
- package/dist/cjs/common/refiners/ForwardDateRefiner.js +8 -13
- package/dist/cjs/common/refiners/ForwardDateRefiner.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DETimeUnitRelativeFormatParser.js +1 -1
- package/dist/cjs/locales/de/parsers/DETimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/constants.d.ts +1 -1
- package/dist/cjs/locales/en/constants.js +1 -1
- package/dist/cjs/locales/en/parsers/ENWeekdayParser.js +1 -1
- package/dist/cjs/locales/en/parsers/ENWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/es/parsers/ESCasualTimeParser.js +5 -0
- package/dist/cjs/locales/es/parsers/ESCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/fi/constants.d.ts +24 -0
- package/dist/cjs/locales/fi/constants.js +197 -0
- package/dist/cjs/locales/fi/constants.js.map +1 -0
- package/dist/cjs/locales/fi/index.d.ts +11 -0
- package/dist/cjs/locales/fi/index.js +62 -0
- package/dist/cjs/locales/fi/index.js.map +1 -0
- package/dist/cjs/locales/fi/parsers/FICasualDateParser.d.ts +7 -0
- package/dist/cjs/locales/fi/parsers/FICasualDateParser.js +102 -0
- package/dist/cjs/locales/fi/parsers/FICasualDateParser.js.map +1 -0
- package/dist/cjs/locales/fi/parsers/FICasualTimeParser.d.ts +8 -0
- package/dist/cjs/locales/fi/parsers/FICasualTimeParser.js +70 -0
- package/dist/cjs/locales/fi/parsers/FICasualTimeParser.js.map +1 -0
- package/dist/cjs/locales/fi/parsers/FIMonthNameLittleEndianParser.d.ts +7 -0
- package/dist/cjs/locales/fi/parsers/FIMonthNameLittleEndianParser.js +48 -0
- package/dist/cjs/locales/fi/parsers/FIMonthNameLittleEndianParser.js.map +1 -0
- package/dist/cjs/locales/fi/parsers/FITimeExpressionParser.d.ts +8 -0
- package/dist/cjs/locales/fi/parsers/FITimeExpressionParser.js +19 -0
- package/dist/cjs/locales/fi/parsers/FITimeExpressionParser.js.map +1 -0
- package/dist/cjs/locales/fi/parsers/FITimeUnitAgoFormatParser.d.ts +7 -0
- package/dist/cjs/locales/fi/parsers/FITimeUnitAgoFormatParser.js +18 -0
- package/dist/cjs/locales/fi/parsers/FITimeUnitAgoFormatParser.js.map +1 -0
- package/dist/cjs/locales/fi/parsers/FITimeUnitCasualRelativeFormatParser.d.ts +9 -0
- package/dist/cjs/locales/fi/parsers/FITimeUnitCasualRelativeFormatParser.js +39 -0
- package/dist/cjs/locales/fi/parsers/FITimeUnitCasualRelativeFormatParser.js.map +1 -0
- package/dist/cjs/locales/fi/parsers/FITimeUnitWithinFormatParser.d.ts +7 -0
- package/dist/cjs/locales/fi/parsers/FITimeUnitWithinFormatParser.js +16 -0
- package/dist/cjs/locales/fi/parsers/FITimeUnitWithinFormatParser.js.map +1 -0
- package/dist/cjs/locales/fi/parsers/FIWeekdayParser.d.ts +7 -0
- package/dist/cjs/locales/fi/parsers/FIWeekdayParser.js +39 -0
- package/dist/cjs/locales/fi/parsers/FIWeekdayParser.js.map +1 -0
- package/dist/cjs/locales/fi/refiners/FIMergeDateRangeRefiner.d.ts +4 -0
- package/dist/cjs/locales/fi/refiners/FIMergeDateRangeRefiner.js +13 -0
- package/dist/cjs/locales/fi/refiners/FIMergeDateRangeRefiner.js.map +1 -0
- package/dist/cjs/locales/fi/refiners/FIMergeDateTimeRefiner.d.ts +4 -0
- package/dist/cjs/locales/fi/refiners/FIMergeDateTimeRefiner.js +13 -0
- package/dist/cjs/locales/fi/refiners/FIMergeDateTimeRefiner.js.map +1 -0
- package/dist/cjs/locales/it/parsers/ITTimeExpressionParser.js +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js +5 -0
- package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.js +5 -0
- package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/vi/constants.d.ts +20 -0
- package/dist/cjs/locales/vi/constants.js +107 -0
- package/dist/cjs/locales/vi/constants.js.map +1 -0
- package/dist/cjs/locales/vi/index.d.ts +11 -0
- package/dist/cjs/locales/vi/index.js +73 -0
- package/dist/cjs/locales/vi/index.js.map +1 -0
- package/dist/cjs/locales/vi/parsers/VICasualDateParser.d.ts +7 -0
- package/dist/cjs/locales/vi/parsers/VICasualDateParser.js +63 -0
- package/dist/cjs/locales/vi/parsers/VICasualDateParser.js.map +1 -0
- package/dist/cjs/locales/vi/parsers/VICasualTimeParser.d.ts +8 -0
- package/dist/cjs/locales/vi/parsers/VICasualTimeParser.js +59 -0
- package/dist/cjs/locales/vi/parsers/VICasualTimeParser.js.map +1 -0
- package/dist/cjs/locales/vi/parsers/VIMonthYearParser.d.ts +7 -0
- package/dist/cjs/locales/vi/parsers/VIMonthYearParser.js +30 -0
- package/dist/cjs/locales/vi/parsers/VIMonthYearParser.js.map +1 -0
- package/dist/cjs/locales/vi/parsers/VIStandardParser.d.ts +7 -0
- package/dist/cjs/locales/vi/parsers/VIStandardParser.js +39 -0
- package/dist/cjs/locales/vi/parsers/VIStandardParser.js.map +1 -0
- package/dist/cjs/locales/vi/parsers/VITimeExpressionParser.d.ts +7 -0
- package/dist/cjs/locales/vi/parsers/VITimeExpressionParser.js +60 -0
- package/dist/cjs/locales/vi/parsers/VITimeExpressionParser.js.map +1 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitAgoFormatParser.d.ts +9 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitAgoFormatParser.js +24 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitAgoFormatParser.js.map +1 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitCasualRelativeFormatParser.d.ts +7 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitCasualRelativeFormatParser.js +37 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitCasualRelativeFormatParser.js.map +1 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitLaterFormatParser.d.ts +9 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitLaterFormatParser.js +23 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitLaterFormatParser.js.map +1 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitWithinFormatParser.d.ts +9 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitWithinFormatParser.js +23 -0
- package/dist/cjs/locales/vi/parsers/VITimeUnitWithinFormatParser.js.map +1 -0
- package/dist/cjs/locales/vi/parsers/VIWeekdayParser.d.ts +7 -0
- package/dist/cjs/locales/vi/parsers/VIWeekdayParser.js +36 -0
- package/dist/cjs/locales/vi/parsers/VIWeekdayParser.js.map +1 -0
- package/dist/cjs/locales/vi/parsers/VIYearParser.d.ts +7 -0
- package/dist/cjs/locales/vi/parsers/VIYearParser.js +29 -0
- package/dist/cjs/locales/vi/parsers/VIYearParser.js.map +1 -0
- package/dist/cjs/locales/vi/refiners/VIMergeDateRangeRefiner.d.ts +4 -0
- package/dist/cjs/locales/vi/refiners/VIMergeDateRangeRefiner.js +13 -0
- package/dist/cjs/locales/vi/refiners/VIMergeDateRangeRefiner.js.map +1 -0
- package/dist/cjs/locales/vi/refiners/VIMergeDateTimeRefiner.d.ts +4 -0
- package/dist/cjs/locales/vi/refiners/VIMergeDateTimeRefiner.js +13 -0
- package/dist/cjs/locales/vi/refiners/VIMergeDateTimeRefiner.js.map +1 -0
- package/dist/cjs/locales/vi/refiners/VIMergeWeekdayComponentRefiner.d.ts +3 -0
- package/dist/cjs/locales/vi/refiners/VIMergeWeekdayComponentRefiner.js +10 -0
- package/dist/cjs/locales/vi/refiners/VIMergeWeekdayComponentRefiner.js.map +1 -0
- package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.d.ts +1 -0
- package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +10 -4
- package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.d.ts +1 -0
- package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +8 -2
- package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
- package/dist/cjs/results.js +1 -1
- package/dist/cjs/results.js.map +1 -1
- package/dist/esm/calculation/mergingCalculation.js +4 -1
- package/dist/esm/calculation/mergingCalculation.js.map +1 -1
- package/dist/esm/common/refiners/ForwardDateRefiner.js +8 -13
- package/dist/esm/common/refiners/ForwardDateRefiner.js.map +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js +1 -1
- package/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/en/constants.d.ts +1 -1
- package/dist/esm/locales/en/constants.js +1 -1
- package/dist/esm/locales/en/parsers/ENWeekdayParser.js +1 -1
- package/dist/esm/locales/en/parsers/ENWeekdayParser.js.map +1 -1
- package/dist/esm/locales/es/parsers/ESCasualTimeParser.js +5 -0
- package/dist/esm/locales/es/parsers/ESCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/fi/constants.d.ts +24 -0
- package/dist/esm/locales/fi/constants.js +191 -0
- package/dist/esm/locales/fi/constants.js.map +1 -0
- package/dist/esm/locales/fi/index.d.ts +11 -0
- package/dist/esm/locales/fi/index.js +48 -0
- package/dist/esm/locales/fi/index.js.map +1 -0
- package/dist/esm/locales/fi/parsers/FICasualDateParser.d.ts +7 -0
- package/dist/esm/locales/fi/parsers/FICasualDateParser.js +63 -0
- package/dist/esm/locales/fi/parsers/FICasualDateParser.js.map +1 -0
- package/dist/esm/locales/fi/parsers/FICasualTimeParser.d.ts +8 -0
- package/dist/esm/locales/fi/parsers/FICasualTimeParser.js +67 -0
- package/dist/esm/locales/fi/parsers/FICasualTimeParser.js.map +1 -0
- package/dist/esm/locales/fi/parsers/FIMonthNameLittleEndianParser.d.ts +7 -0
- package/dist/esm/locales/fi/parsers/FIMonthNameLittleEndianParser.js +45 -0
- package/dist/esm/locales/fi/parsers/FIMonthNameLittleEndianParser.js.map +1 -0
- package/dist/esm/locales/fi/parsers/FITimeExpressionParser.d.ts +8 -0
- package/dist/esm/locales/fi/parsers/FITimeExpressionParser.js +16 -0
- package/dist/esm/locales/fi/parsers/FITimeExpressionParser.js.map +1 -0
- package/dist/esm/locales/fi/parsers/FITimeUnitAgoFormatParser.d.ts +7 -0
- package/dist/esm/locales/fi/parsers/FITimeUnitAgoFormatParser.js +15 -0
- package/dist/esm/locales/fi/parsers/FITimeUnitAgoFormatParser.js.map +1 -0
- package/dist/esm/locales/fi/parsers/FITimeUnitCasualRelativeFormatParser.d.ts +9 -0
- package/dist/esm/locales/fi/parsers/FITimeUnitCasualRelativeFormatParser.js +37 -0
- package/dist/esm/locales/fi/parsers/FITimeUnitCasualRelativeFormatParser.js.map +1 -0
- package/dist/esm/locales/fi/parsers/FITimeUnitWithinFormatParser.d.ts +7 -0
- package/dist/esm/locales/fi/parsers/FITimeUnitWithinFormatParser.js +13 -0
- package/dist/esm/locales/fi/parsers/FITimeUnitWithinFormatParser.js.map +1 -0
- package/dist/esm/locales/fi/parsers/FIWeekdayParser.d.ts +7 -0
- package/dist/esm/locales/fi/parsers/FIWeekdayParser.js +36 -0
- package/dist/esm/locales/fi/parsers/FIWeekdayParser.js.map +1 -0
- package/dist/esm/locales/fi/refiners/FIMergeDateRangeRefiner.d.ts +4 -0
- package/dist/esm/locales/fi/refiners/FIMergeDateRangeRefiner.js +7 -0
- package/dist/esm/locales/fi/refiners/FIMergeDateRangeRefiner.js.map +1 -0
- package/dist/esm/locales/fi/refiners/FIMergeDateTimeRefiner.d.ts +4 -0
- package/dist/esm/locales/fi/refiners/FIMergeDateTimeRefiner.js +7 -0
- package/dist/esm/locales/fi/refiners/FIMergeDateTimeRefiner.js.map +1 -0
- package/dist/esm/locales/it/parsers/ITTimeExpressionParser.js +1 -1
- package/dist/esm/locales/it/parsers/ITTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualTimeParser.js +5 -0
- package/dist/esm/locales/nl/parsers/NLCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/pt/parsers/PTCasualTimeParser.js +5 -0
- package/dist/esm/locales/pt/parsers/PTCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/vi/constants.d.ts +20 -0
- package/dist/esm/locales/vi/constants.js +101 -0
- package/dist/esm/locales/vi/constants.js.map +1 -0
- package/dist/esm/locales/vi/index.d.ts +11 -0
- package/dist/esm/locales/vi/index.js +59 -0
- package/dist/esm/locales/vi/index.js.map +1 -0
- package/dist/esm/locales/vi/parsers/VICasualDateParser.d.ts +7 -0
- package/dist/esm/locales/vi/parsers/VICasualDateParser.js +27 -0
- package/dist/esm/locales/vi/parsers/VICasualDateParser.js.map +1 -0
- package/dist/esm/locales/vi/parsers/VICasualTimeParser.d.ts +8 -0
- package/dist/esm/locales/vi/parsers/VICasualTimeParser.js +56 -0
- package/dist/esm/locales/vi/parsers/VICasualTimeParser.js.map +1 -0
- package/dist/esm/locales/vi/parsers/VIMonthYearParser.d.ts +7 -0
- package/dist/esm/locales/vi/parsers/VIMonthYearParser.js +27 -0
- package/dist/esm/locales/vi/parsers/VIMonthYearParser.js.map +1 -0
- package/dist/esm/locales/vi/parsers/VIStandardParser.d.ts +7 -0
- package/dist/esm/locales/vi/parsers/VIStandardParser.js +36 -0
- package/dist/esm/locales/vi/parsers/VIStandardParser.js.map +1 -0
- package/dist/esm/locales/vi/parsers/VITimeExpressionParser.d.ts +7 -0
- package/dist/esm/locales/vi/parsers/VITimeExpressionParser.js +56 -0
- package/dist/esm/locales/vi/parsers/VITimeExpressionParser.js.map +1 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitAgoFormatParser.d.ts +9 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitAgoFormatParser.js +22 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitAgoFormatParser.js.map +1 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitCasualRelativeFormatParser.d.ts +7 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitCasualRelativeFormatParser.js +34 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitCasualRelativeFormatParser.js.map +1 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitLaterFormatParser.d.ts +9 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitLaterFormatParser.js +21 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitLaterFormatParser.js.map +1 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitWithinFormatParser.d.ts +9 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitWithinFormatParser.js +21 -0
- package/dist/esm/locales/vi/parsers/VITimeUnitWithinFormatParser.js.map +1 -0
- package/dist/esm/locales/vi/parsers/VIWeekdayParser.d.ts +7 -0
- package/dist/esm/locales/vi/parsers/VIWeekdayParser.js +33 -0
- package/dist/esm/locales/vi/parsers/VIWeekdayParser.js.map +1 -0
- package/dist/esm/locales/vi/parsers/VIYearParser.d.ts +7 -0
- package/dist/esm/locales/vi/parsers/VIYearParser.js +26 -0
- package/dist/esm/locales/vi/parsers/VIYearParser.js.map +1 -0
- package/dist/esm/locales/vi/refiners/VIMergeDateRangeRefiner.d.ts +4 -0
- package/dist/esm/locales/vi/refiners/VIMergeDateRangeRefiner.js +7 -0
- package/dist/esm/locales/vi/refiners/VIMergeDateRangeRefiner.js.map +1 -0
- package/dist/esm/locales/vi/refiners/VIMergeDateTimeRefiner.d.ts +4 -0
- package/dist/esm/locales/vi/refiners/VIMergeDateTimeRefiner.js +7 -0
- package/dist/esm/locales/vi/refiners/VIMergeDateTimeRefiner.js.map +1 -0
- package/dist/esm/locales/vi/refiners/VIMergeWeekdayComponentRefiner.d.ts +3 -0
- package/dist/esm/locales/vi/refiners/VIMergeWeekdayComponentRefiner.js +4 -0
- package/dist/esm/locales/vi/refiners/VIMergeWeekdayComponentRefiner.js.map +1 -0
- package/dist/esm/locales/zh/hans/parsers/ZHHansTimeExpressionParser.d.ts +1 -0
- package/dist/esm/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +10 -4
- package/dist/esm/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantTimeExpressionParser.d.ts +1 -0
- package/dist/esm/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +8 -2
- package/dist/esm/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
- package/dist/esm/results.js +1 -1
- package/dist/esm/results.js.map +1 -1
- package/package.json +2 -2
- package/src/calculation/mergingCalculation.ts +7 -1
- package/src/common/refiners/ForwardDateRefiner.ts +8 -14
- package/src/index.ts +3 -1
- package/src/locales/de/parsers/DETimeUnitRelativeFormatParser.ts +1 -1
- package/src/locales/en/constants.ts +1 -1
- package/src/locales/en/parsers/ENWeekdayParser.ts +1 -1
- package/src/locales/es/parsers/ESCasualTimeParser.ts +5 -0
- package/src/locales/fi/constants.ts +209 -0
- package/src/locales/fi/index.ts +57 -0
- package/src/locales/fi/parsers/FICasualDateParser.ts +82 -0
- package/src/locales/fi/parsers/FICasualTimeParser.ts +78 -0
- package/src/locales/fi/parsers/FIMonthNameLittleEndianParser.ts +57 -0
- package/src/locales/fi/parsers/FITimeExpressionParser.ts +22 -0
- package/src/locales/fi/parsers/FITimeUnitAgoFormatParser.ts +18 -0
- package/src/locales/fi/parsers/FITimeUnitCasualRelativeFormatParser.ts +47 -0
- package/src/locales/fi/parsers/FITimeUnitWithinFormatParser.ts +15 -0
- package/src/locales/fi/parsers/FIWeekdayParser.ts +46 -0
- package/src/locales/fi/refiners/FIMergeDateRangeRefiner.ts +7 -0
- package/src/locales/fi/refiners/FIMergeDateTimeRefiner.ts +7 -0
- package/src/locales/it/parsers/ITTimeExpressionParser.ts +1 -1
- package/src/locales/nl/parsers/NLCasualTimeParser.ts +5 -0
- package/src/locales/pt/parsers/PTCasualTimeParser.ts +5 -0
- package/src/locales/vi/constants.ts +113 -0
- package/src/locales/vi/index.ts +73 -0
- package/src/locales/vi/parsers/VICasualDateParser.ts +31 -0
- package/src/locales/vi/parsers/VICasualTimeParser.ts +62 -0
- package/src/locales/vi/parsers/VIMonthYearParser.ts +35 -0
- package/src/locales/vi/parsers/VIStandardParser.ts +45 -0
- package/src/locales/vi/parsers/VITimeExpressionParser.ts +66 -0
- package/src/locales/vi/parsers/VITimeUnitAgoFormatParser.ts +23 -0
- package/src/locales/vi/parsers/VITimeUnitCasualRelativeFormatParser.ts +46 -0
- package/src/locales/vi/parsers/VITimeUnitLaterFormatParser.ts +25 -0
- package/src/locales/vi/parsers/VITimeUnitWithinFormatParser.ts +22 -0
- package/src/locales/vi/parsers/VIWeekdayParser.ts +41 -0
- package/src/locales/vi/parsers/VIYearParser.ts +31 -0
- package/src/locales/vi/refiners/VIMergeDateRangeRefiner.ts +7 -0
- package/src/locales/vi/refiners/VIMergeDateTimeRefiner.ts +7 -0
- package/src/locales/vi/refiners/VIMergeWeekdayComponentRefiner.ts +7 -0
- package/src/locales/zh/hans/parsers/ZHHansTimeExpressionParser.ts +15 -4
- package/src/locales/zh/hant/parsers/ZHHantTimeExpressionParser.ts +14 -2
- package/src/results.ts +1 -3
- package/test/de/de_time_units_casual_relative.test.ts +12 -0
- package/test/en/en_month_name_little_endian.test.ts +30 -0
- package/test/en/en_time_units_casual_relative.test.ts +11 -0
- package/test/en/en_weekday.test.ts +123 -0
- package/test/fi/fi_casual.test.ts +85 -0
- package/test/fi/fi_casual_time.test.ts +56 -0
- package/test/fi/fi_month_name_little_endian.test.ts +50 -0
- package/test/fi/fi_time_exp.test.ts +39 -0
- package/test/fi/fi_time_units_ago.test.ts +93 -0
- package/test/fi/fi_time_units_casual_relative.test.ts +117 -0
- package/test/fi/fi_time_units_within.test.ts +74 -0
- package/test/fi/fi_weekday.test.ts +90 -0
- package/test/it/it_month_name_middle_endian.test.ts +39 -0
- package/test/it/it_time_exp.test.ts +84 -0
- package/test/it/it_year_month_day.test.ts +41 -0
- package/test/result.test.ts +8 -0
- package/test/system.test.ts +4 -3
- package/test/system_timezone.test.ts +99 -0
- package/test/vi/vi_casual.test.ts +84 -0
- package/test/vi/vi_casual_time.test.ts +77 -0
- package/test/vi/vi_date_range.test.ts +61 -0
- package/test/vi/vi_forward_date.test.ts +45 -0
- package/test/vi/vi_month_year.test.ts +40 -0
- package/test/vi/vi_negative_cases.test.ts +60 -0
- package/test/vi/vi_slash.test.ts +36 -0
- package/test/vi/vi_standard.test.ts +86 -0
- package/test/vi/vi_strict.test.ts +67 -0
- package/test/vi/vi_time_exp.test.ts +99 -0
- package/test/vi/vi_time_units_ago.test.ts +56 -0
- package/test/vi/vi_time_units_casual_relative.test.ts +56 -0
- package/test/vi/vi_time_units_later.test.ts +43 -0
- package/test/vi/vi_time_units_within.test.ts +24 -0
- package/test/vi/vi_weekday.test.ts +77 -0
- package/test/vi/vi_year.test.ts +42 -0
- package/test/zh/hans/zh_hans_time_exp.test.ts +252 -6
- package/test/zh/hant/zh_hant_time_exp.test.ts +30 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ParsingContext } from "../../../chrono";
|
|
2
|
+
import { ParsingResult } from "../../../results";
|
|
3
|
+
import { YEAR_PATTERN, parseYear } from "../constants";
|
|
4
|
+
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
|
|
5
|
+
|
|
6
|
+
// năm 1975 | năm 43 TCN | 179 TCN (bare BC year without năm prefix)
|
|
7
|
+
const PATTERN = new RegExp("(?:\\bnăm\\s*(" + YEAR_PATTERN + ")|\\b([0-9]{1,4})\\s*(TCN))(?=\\W|$)", "i");
|
|
8
|
+
|
|
9
|
+
const YEAR_WITH_NAM_GROUP = 1; // năm YYYY or năm YYYY TCN
|
|
10
|
+
const BARE_BC_YEAR_GROUP = 2; // bare YYYY in "YYYY TCN"
|
|
11
|
+
const BARE_BC_SUFFIX_GROUP = 3; // "TCN" in bare form
|
|
12
|
+
|
|
13
|
+
export default class VIYearParser extends AbstractParserWithWordBoundaryChecking {
|
|
14
|
+
innerPattern(): RegExp {
|
|
15
|
+
return PATTERN;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingResult {
|
|
19
|
+
let yearText: string;
|
|
20
|
+
if (match[YEAR_WITH_NAM_GROUP]) {
|
|
21
|
+
yearText = match[YEAR_WITH_NAM_GROUP];
|
|
22
|
+
} else {
|
|
23
|
+
yearText = match[BARE_BC_YEAR_GROUP] + " " + match[BARE_BC_SUFFIX_GROUP];
|
|
24
|
+
}
|
|
25
|
+
const result = context.createParsingResult(match.index, match[0]);
|
|
26
|
+
result.start.assign("year", parseYear(yearText));
|
|
27
|
+
result.start.imply("month", 1);
|
|
28
|
+
result.start.imply("day", 1);
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import MergeWeekdayComponentRefiner from "../../../common/refiners/MergeWeekdayComponentRefiner";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Merge weekday with adjacent date/time component.
|
|
5
|
+
* e.g. [th\u1ee9 Hai] [l\u00fac 7 gi\u1edd] => [th\u1ee9 Hai l\u00fac 7 gi\u1edd]
|
|
6
|
+
*/
|
|
7
|
+
export default class VIMergeWeekdayComponentRefiner extends MergeWeekdayComponentRefiner {}
|
|
@@ -63,6 +63,12 @@ const SECOND_GROUP = 8;
|
|
|
63
63
|
const AM_PM_HOUR_GROUP = 9;
|
|
64
64
|
|
|
65
65
|
export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBoundaryChecking {
|
|
66
|
+
patternLeftBoundary(): string {
|
|
67
|
+
// Return a capturing group to ensure that the match index is correct in the base class
|
|
68
|
+
// while avoiding matching CJK characters as word boundaries.
|
|
69
|
+
return "()";
|
|
70
|
+
}
|
|
71
|
+
|
|
66
72
|
innerPattern(): RegExp {
|
|
67
73
|
return FIRST_REG_PATTERN;
|
|
68
74
|
}
|
|
@@ -74,14 +80,14 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
74
80
|
}
|
|
75
81
|
|
|
76
82
|
const result = context.createParsingResult(match.index, match[0]);
|
|
77
|
-
const startMoment = new Date(context.
|
|
83
|
+
const startMoment = new Date(context.reference.instant.getTime());
|
|
78
84
|
|
|
79
85
|
// ----- Day
|
|
80
86
|
if (match[DAY_GROUP_1]) {
|
|
81
87
|
const day1 = match[DAY_GROUP_1];
|
|
82
88
|
if (day1 == "明") {
|
|
83
89
|
// Check not "Tomorrow" on late night
|
|
84
|
-
if (context.
|
|
90
|
+
if (context.reference.instant.getHours() > 1) {
|
|
85
91
|
startMoment.setDate(startMoment.getDate() + 1);
|
|
86
92
|
}
|
|
87
93
|
} else if (day1 == "昨") {
|
|
@@ -240,7 +246,12 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
240
246
|
return result;
|
|
241
247
|
}
|
|
242
248
|
|
|
243
|
-
|
|
249
|
+
let endMoment = new Date(startMoment.getTime());
|
|
250
|
+
if (secondMatch[DAY_GROUP_1] || secondMatch[DAY_GROUP_3]) {
|
|
251
|
+
// If the end time expression has a relative day specified (e.g. "Tomorrow"),
|
|
252
|
+
// we should reset the end date to the reference date to calculate the relative date correctly.
|
|
253
|
+
endMoment = new Date(context.reference.instant.getTime());
|
|
254
|
+
}
|
|
244
255
|
result.end = context.createParsingComponents();
|
|
245
256
|
|
|
246
257
|
// ----- Day
|
|
@@ -248,7 +259,7 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
248
259
|
const day1 = secondMatch[DAY_GROUP_1];
|
|
249
260
|
if (day1 == "明") {
|
|
250
261
|
// Check not "Tomorrow" on late night
|
|
251
|
-
if (context.
|
|
262
|
+
if (context.reference.instant.getHours() > 1) {
|
|
252
263
|
endMoment.setDate(endMoment.getDate() + 1);
|
|
253
264
|
}
|
|
254
265
|
} else if (day1 == "昨") {
|
|
@@ -63,6 +63,12 @@ const SECOND_GROUP = 8;
|
|
|
63
63
|
const AM_PM_HOUR_GROUP = 9;
|
|
64
64
|
|
|
65
65
|
export default class ZHHantTimeExpressionParser extends AbstractParserWithWordBoundaryChecking {
|
|
66
|
+
patternLeftBoundary(): string {
|
|
67
|
+
// Return a capturing group to ensure that the match index is correct in the base class
|
|
68
|
+
// while avoiding matching CJK characters as word boundaries.
|
|
69
|
+
return "()";
|
|
70
|
+
}
|
|
71
|
+
|
|
66
72
|
innerPattern(): RegExp {
|
|
67
73
|
return FIRST_REG_PATTERN;
|
|
68
74
|
}
|
|
@@ -74,7 +80,7 @@ export default class ZHHantTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
74
80
|
}
|
|
75
81
|
|
|
76
82
|
const result = context.createParsingResult(match.index, match[0]);
|
|
77
|
-
const startMoment = new Date(context.
|
|
83
|
+
const startMoment = new Date(context.reference.instant.getTime());
|
|
78
84
|
|
|
79
85
|
// ----- Day
|
|
80
86
|
if (match[DAY_GROUP_1]) {
|
|
@@ -240,7 +246,13 @@ export default class ZHHantTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
240
246
|
return result;
|
|
241
247
|
}
|
|
242
248
|
|
|
243
|
-
|
|
249
|
+
let endMoment = new Date(startMoment.getTime());
|
|
250
|
+
if (secondMatch[DAY_GROUP_1] || secondMatch[DAY_GROUP_3]) {
|
|
251
|
+
// If the end time expression has a relative day specified (e.g. "Tomorrow"),
|
|
252
|
+
// we should reset the end date to the reference date to calculate the relative date correctly.
|
|
253
|
+
endMoment = new Date(context.reference.instant.getTime());
|
|
254
|
+
}
|
|
255
|
+
|
|
244
256
|
result.end = context.createParsingComponents();
|
|
245
257
|
|
|
246
258
|
// ----- Day
|
package/src/results.ts
CHANGED
|
@@ -44,9 +44,7 @@ export class ReferenceWithTimezone {
|
|
|
44
44
|
* @param overrideTimezoneOffset
|
|
45
45
|
*/
|
|
46
46
|
getSystemTimezoneAdjustmentMinute(date?: Date, overrideTimezoneOffset?: number): number {
|
|
47
|
-
if (!date
|
|
48
|
-
// Javascript date timezone calculation got effect when the time epoch < 0
|
|
49
|
-
// e.g. new Date('Tue Feb 02 1300 00:00:00 GMT+0900 (JST)') => Tue Feb 02 1300 00:18:59 GMT+0918 (JST)
|
|
47
|
+
if (!date) {
|
|
50
48
|
date = new Date();
|
|
51
49
|
}
|
|
52
50
|
|
|
@@ -106,3 +106,15 @@ test("Test - de - relative date", function () {
|
|
|
106
106
|
expect(result.start.isCertain("second")).toBeFalsy();
|
|
107
107
|
});
|
|
108
108
|
});
|
|
109
|
+
|
|
110
|
+
test("Test - de - false positive prevention for single-letter time units", function () {
|
|
111
|
+
// Test that "Letzte A" in "Letzte Aktualisierun" doesn't match as "letzte a" (last year)
|
|
112
|
+
// The word boundary check should prevent "A" from matching the time unit "a"
|
|
113
|
+
testSingleCase(chrono.de, "Letzte Aktualisierun 03/12/2025", (result) => {
|
|
114
|
+
expect(result.text).toBe("03/12/2025");
|
|
115
|
+
expect(result.start.get("year")).toBe(2025);
|
|
116
|
+
expect(result.start.get("month")).toBe(12);
|
|
117
|
+
expect(result.start.get("day")).toBe(3);
|
|
118
|
+
expect(result).toBeDate(new Date(2025, 12 - 1, 3, 12));
|
|
119
|
+
});
|
|
120
|
+
});
|
|
@@ -416,3 +416,33 @@ test("Test - Impossible Dates (Strict Mode)", function () {
|
|
|
416
416
|
|
|
417
417
|
testUnexpectedResult(chrono.strict, "29 February", new Date(2013, 7, 10));
|
|
418
418
|
});
|
|
419
|
+
|
|
420
|
+
test("Test - Year 3000+ support (Issue #636)", () => {
|
|
421
|
+
testSingleCase(chrono, "Jan 1 3000, 9:30", (result) => {
|
|
422
|
+
expect(result.index).toBe(0);
|
|
423
|
+
expect(result.text).toBe("Jan 1 3000, 9:30");
|
|
424
|
+
|
|
425
|
+
expect(result.start).not.toBeNull();
|
|
426
|
+
expect(result.start.get("year")).toBe(3000);
|
|
427
|
+
expect(result.start.get("month")).toBe(1);
|
|
428
|
+
expect(result.start.get("day")).toBe(1);
|
|
429
|
+
expect(result.start.get("hour")).toBe(9);
|
|
430
|
+
expect(result.start.get("minute")).toBe(30);
|
|
431
|
+
|
|
432
|
+
expect(result.start).toBeDate(new Date(3000, 1 - 1, 1, 9, 30));
|
|
433
|
+
});
|
|
434
|
+
|
|
435
|
+
testSingleCase(chrono, "Jan 1 2025, 9:30", (result) => {
|
|
436
|
+
expect(result.index).toBe(0);
|
|
437
|
+
expect(result.text).toBe("Jan 1 2025, 9:30");
|
|
438
|
+
|
|
439
|
+
expect(result.start).not.toBeNull();
|
|
440
|
+
expect(result.start.get("year")).toBe(2025);
|
|
441
|
+
expect(result.start.get("month")).toBe(1);
|
|
442
|
+
expect(result.start.get("day")).toBe(1);
|
|
443
|
+
expect(result.start.get("hour")).toBe(9);
|
|
444
|
+
expect(result.start.get("minute")).toBe(30);
|
|
445
|
+
|
|
446
|
+
expect(result.start).toBeDate(new Date(2025, 1 - 1, 1, 9, 30));
|
|
447
|
+
});
|
|
448
|
+
});
|
|
@@ -145,6 +145,17 @@ test("Test - Minus '-' sign", () => {
|
|
|
145
145
|
expect(result.start.get("hour")).toBe(9);
|
|
146
146
|
expect(result.start.get("minute")).toBe(55);
|
|
147
147
|
});
|
|
148
|
+
|
|
149
|
+
testSingleCase(chrono, "-5d 00", new Date(2016, 10 - 1, 1, 12), (result, text) => {
|
|
150
|
+
expect(result.text).toBe(text);
|
|
151
|
+
expect(result.start.get("year")).toBe(2016);
|
|
152
|
+
expect(result.start.get("month")).toBe(9);
|
|
153
|
+
expect(result.start.get("day")).toBe(26);
|
|
154
|
+
expect(result.start.get("hour")).toBe(0);
|
|
155
|
+
expect(result.start.get("minute")).toBe(0);
|
|
156
|
+
|
|
157
|
+
expect(result.start).toBeDate(new Date(2016, 9 - 1, 26, 0, 0));
|
|
158
|
+
});
|
|
148
159
|
});
|
|
149
160
|
|
|
150
161
|
test("Test - Without custom parser without abbreviations", function () {
|
|
@@ -342,6 +342,111 @@ test("Test - Weekday range", () => {
|
|
|
342
342
|
});
|
|
343
343
|
});
|
|
344
344
|
|
|
345
|
+
test("Test - Weekday 'of next/last/this week' connector", function () {
|
|
346
|
+
// Ref date is a Tuesday — the same weekday as most test targets below.
|
|
347
|
+
// Before the fix, 'Tuesday of next week' silently dropped the modifier and
|
|
348
|
+
// resolved to today (0 days forward) instead of +7 days.
|
|
349
|
+
const refDate = new Date("Tue Aug 2 2022");
|
|
350
|
+
|
|
351
|
+
// --- of next week ---
|
|
352
|
+
|
|
353
|
+
testSingleCase(chrono.casual, "Tuesday of next week", refDate, (result) => {
|
|
354
|
+
expect(result.text).toBe("Tuesday of next week");
|
|
355
|
+
expect(result.start.get("year")).toBe(2022);
|
|
356
|
+
expect(result.start.get("month")).toBe(8);
|
|
357
|
+
expect(result.start.get("day")).toBe(9); // Aug 9 — NOT today (Aug 2)
|
|
358
|
+
expect(result.start.get("weekday")).toBe(2);
|
|
359
|
+
expect(result.start).toBeDate(new Date(2022, 7, 9, 12));
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
testSingleCase(chrono.casual, "Friday of next week", refDate, (result) => {
|
|
363
|
+
expect(result.text).toBe("Friday of next week");
|
|
364
|
+
expect(result.start.get("year")).toBe(2022);
|
|
365
|
+
expect(result.start.get("month")).toBe(8);
|
|
366
|
+
expect(result.start.get("day")).toBe(12); // Aug 12
|
|
367
|
+
expect(result.start.get("weekday")).toBe(5);
|
|
368
|
+
expect(result.start).toBeDate(new Date(2022, 7, 12, 12));
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
testSingleCase(chrono.casual, "Monday of next week", refDate, (result) => {
|
|
372
|
+
expect(result.text).toBe("Monday of next week");
|
|
373
|
+
expect(result.start.get("year")).toBe(2022);
|
|
374
|
+
expect(result.start.get("month")).toBe(8);
|
|
375
|
+
expect(result.start.get("day")).toBe(8); // Aug 8
|
|
376
|
+
expect(result.start.get("weekday")).toBe(1);
|
|
377
|
+
expect(result.start).toBeDate(new Date(2022, 7, 8, 12));
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
// --- of last week ---
|
|
381
|
+
|
|
382
|
+
testSingleCase(chrono.casual, "Tuesday of last week", refDate, (result) => {
|
|
383
|
+
expect(result.text).toBe("Tuesday of last week");
|
|
384
|
+
expect(result.start.get("year")).toBe(2022);
|
|
385
|
+
expect(result.start.get("month")).toBe(7);
|
|
386
|
+
expect(result.start.get("day")).toBe(26); // Jul 26
|
|
387
|
+
expect(result.start.get("weekday")).toBe(2);
|
|
388
|
+
expect(result.start).toBeDate(new Date(2022, 6, 26, 12));
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
testSingleCase(chrono.casual, "Friday of last week", refDate, (result) => {
|
|
392
|
+
expect(result.text).toBe("Friday of last week");
|
|
393
|
+
expect(result.start.get("year")).toBe(2022);
|
|
394
|
+
expect(result.start.get("month")).toBe(7);
|
|
395
|
+
expect(result.start.get("day")).toBe(29); // Jul 29
|
|
396
|
+
expect(result.start.get("weekday")).toBe(5);
|
|
397
|
+
expect(result.start).toBeDate(new Date(2022, 6, 29, 12));
|
|
398
|
+
});
|
|
399
|
+
|
|
400
|
+
// --- of this week ---
|
|
401
|
+
|
|
402
|
+
testSingleCase(chrono.casual, "Wednesday of this week", refDate, (result) => {
|
|
403
|
+
expect(result.text).toBe("Wednesday of this week");
|
|
404
|
+
expect(result.start.get("year")).toBe(2022);
|
|
405
|
+
expect(result.start.get("month")).toBe(8);
|
|
406
|
+
expect(result.start.get("day")).toBe(3); // Aug 3
|
|
407
|
+
expect(result.start.get("weekday")).toBe(3);
|
|
408
|
+
expect(result.start).toBeDate(new Date(2022, 7, 3, 12));
|
|
409
|
+
});
|
|
410
|
+
|
|
411
|
+
testSingleCase(chrono.casual, "Tuesday of this week", refDate, (result) => {
|
|
412
|
+
expect(result.text).toBe("Tuesday of this week");
|
|
413
|
+
expect(result.start.get("year")).toBe(2022);
|
|
414
|
+
expect(result.start.get("month")).toBe(8);
|
|
415
|
+
expect(result.start.get("day")).toBe(2); // Aug 2 — same day as ref
|
|
416
|
+
expect(result.start.get("weekday")).toBe(2);
|
|
417
|
+
expect(result.start).toBeDate(new Date(2022, 7, 2, 12));
|
|
418
|
+
});
|
|
419
|
+
|
|
420
|
+
// --- with time: merges into a single result (the original bug produced two) ---
|
|
421
|
+
|
|
422
|
+
testSingleCase(chrono.casual, "Tuesday of next week after 2pm", refDate, (result) => {
|
|
423
|
+
expect(result.text).toBe("Tuesday of next week after 2pm");
|
|
424
|
+
expect(result.start.get("year")).toBe(2022);
|
|
425
|
+
expect(result.start.get("month")).toBe(8);
|
|
426
|
+
expect(result.start.get("day")).toBe(9); // Aug 9
|
|
427
|
+
expect(result.start.get("hour")).toBe(14);
|
|
428
|
+
expect(result.start).toBeDate(new Date(2022, 7, 9, 14));
|
|
429
|
+
});
|
|
430
|
+
|
|
431
|
+
testSingleCase(chrono.casual, "Friday of next week at 9am", refDate, (result) => {
|
|
432
|
+
expect(result.text).toBe("Friday of next week at 9am");
|
|
433
|
+
expect(result.start.get("year")).toBe(2022);
|
|
434
|
+
expect(result.start.get("month")).toBe(8);
|
|
435
|
+
expect(result.start.get("day")).toBe(12); // Aug 12
|
|
436
|
+
expect(result.start.get("hour")).toBe(9);
|
|
437
|
+
expect(result.start).toBeDate(new Date(2022, 7, 12, 9));
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
// --- in sentence context ---
|
|
441
|
+
|
|
442
|
+
testSingleCase(chrono.casual, "Let's sync on Tuesday of next week", refDate, (result) => {
|
|
443
|
+
expect(result.text).toBe("on Tuesday of next week");
|
|
444
|
+
expect(result.start.get("day")).toBe(9);
|
|
445
|
+
expect(result.start.get("month")).toBe(8);
|
|
446
|
+
expect(result.start.get("year")).toBe(2022);
|
|
447
|
+
});
|
|
448
|
+
});
|
|
449
|
+
|
|
345
450
|
test("Test - forward dates only option", () => {
|
|
346
451
|
testSingleCase(
|
|
347
452
|
chrono.casual,
|
|
@@ -447,4 +552,22 @@ test("Test - forward dates only option", () => {
|
|
|
447
552
|
expect(result.end.get("day")).toBe(21);
|
|
448
553
|
}
|
|
449
554
|
);
|
|
555
|
+
|
|
556
|
+
testSingleCase(
|
|
557
|
+
chrono.casual,
|
|
558
|
+
"timeoff monday 7 to 9am",
|
|
559
|
+
new Date("thursday 13 June 2019"),
|
|
560
|
+
{ forwardDate: true },
|
|
561
|
+
(result) => {
|
|
562
|
+
expect(result.text).toBe("monday 7 to 9am");
|
|
563
|
+
|
|
564
|
+
expect(result.start.get("year")).toBe(2019);
|
|
565
|
+
expect(result.start.get("month")).toBe(6);
|
|
566
|
+
expect(result.start.get("day")).toBe(17);
|
|
567
|
+
|
|
568
|
+
expect(result.end.get("year")).toBe(2019);
|
|
569
|
+
expect(result.end.get("month")).toBe(6);
|
|
570
|
+
expect(result.end.get("day")).toBe(17);
|
|
571
|
+
}
|
|
572
|
+
);
|
|
450
573
|
});
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as chrono from "../../src/locales/fi";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single Expression", function () {
|
|
5
|
+
testSingleCase(chrono, "tänään", new Date(2012, 7, 10), (result) => {
|
|
6
|
+
expect(result.start.get("year")).toBe(2012);
|
|
7
|
+
expect(result.start.get("month")).toBe(8);
|
|
8
|
+
expect(result.start.get("day")).toBe(10);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
testSingleCase(chrono, "huomenna", new Date(2012, 7, 10), (result) => {
|
|
12
|
+
expect(result.start.get("year")).toBe(2012);
|
|
13
|
+
expect(result.start.get("month")).toBe(8);
|
|
14
|
+
expect(result.start.get("day")).toBe(11);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
testSingleCase(chrono, "eilen", new Date(2012, 7, 10), (result) => {
|
|
18
|
+
expect(result.start.get("year")).toBe(2012);
|
|
19
|
+
expect(result.start.get("month")).toBe(8);
|
|
20
|
+
expect(result.start.get("day")).toBe(9);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
testSingleCase(chrono, "ylihuomenna", new Date(2012, 7, 10), (result) => {
|
|
24
|
+
expect(result.start.get("year")).toBe(2012);
|
|
25
|
+
expect(result.start.get("month")).toBe(8);
|
|
26
|
+
expect(result.start.get("day")).toBe(12);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
testSingleCase(chrono, "toissapäivänä", new Date(2012, 7, 10), (result) => {
|
|
30
|
+
expect(result.start.get("year")).toBe(2012);
|
|
31
|
+
expect(result.start.get("month")).toBe(8);
|
|
32
|
+
expect(result.start.get("day")).toBe(8);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test("Test - Combined Expression", function () {
|
|
37
|
+
testSingleCase(chrono, "tänään aamulla", new Date(2012, 7, 10), (result) => {
|
|
38
|
+
expect(result.start.get("year")).toBe(2012);
|
|
39
|
+
expect(result.start.get("month")).toBe(8);
|
|
40
|
+
expect(result.start.get("day")).toBe(10);
|
|
41
|
+
expect(result.start.get("hour")).toBe(6);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
testSingleCase(chrono, "tänään aamupäivällä", new Date(2012, 7, 10), (result) => {
|
|
45
|
+
expect(result.start.get("year")).toBe(2012);
|
|
46
|
+
expect(result.start.get("month")).toBe(8);
|
|
47
|
+
expect(result.start.get("day")).toBe(10);
|
|
48
|
+
expect(result.start.get("hour")).toBe(9);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
testSingleCase(chrono, "tänään päivällä", new Date(2012, 7, 10), (result) => {
|
|
52
|
+
expect(result.start.get("year")).toBe(2012);
|
|
53
|
+
expect(result.start.get("month")).toBe(8);
|
|
54
|
+
expect(result.start.get("day")).toBe(10);
|
|
55
|
+
expect(result.start.get("hour")).toBe(12);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
testSingleCase(chrono, "tänään iltapäivällä", new Date(2012, 7, 10), (result) => {
|
|
59
|
+
expect(result.start.get("year")).toBe(2012);
|
|
60
|
+
expect(result.start.get("month")).toBe(8);
|
|
61
|
+
expect(result.start.get("day")).toBe(10);
|
|
62
|
+
expect(result.start.get("hour")).toBe(15);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
testSingleCase(chrono, "tänään illalla", new Date(2012, 7, 10), (result) => {
|
|
66
|
+
expect(result.start.get("year")).toBe(2012);
|
|
67
|
+
expect(result.start.get("month")).toBe(8);
|
|
68
|
+
expect(result.start.get("day")).toBe(10);
|
|
69
|
+
expect(result.start.get("hour")).toBe(18);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
testSingleCase(chrono, "tänään yöllä", new Date(2012, 7, 10), (result) => {
|
|
73
|
+
expect(result.start.get("year")).toBe(2012);
|
|
74
|
+
expect(result.start.get("month")).toBe(8);
|
|
75
|
+
expect(result.start.get("day")).toBe(10);
|
|
76
|
+
expect(result.start.get("hour")).toBe(22);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
testSingleCase(chrono, "tänään keskiyöllä", new Date(2012, 7, 10), (result) => {
|
|
80
|
+
expect(result.start.get("year")).toBe(2012);
|
|
81
|
+
expect(result.start.get("month")).toBe(8);
|
|
82
|
+
expect(result.start.get("day")).toBe(10);
|
|
83
|
+
expect(result.start.get("hour")).toBe(0);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as chrono from "../../src/locales/fi";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Standalone casual time expressions", function () {
|
|
5
|
+
testSingleCase(chrono, "aamulla", new Date(2012, 7, 10, 14, 0), (result) => {
|
|
6
|
+
expect(result.text).toBe("aamulla");
|
|
7
|
+
expect(result.start.get("hour")).toBe(6);
|
|
8
|
+
expect(result.start.get("minute")).toBe(0);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
testSingleCase(chrono, "aamupäivällä", new Date(2012, 7, 10, 14, 0), (result) => {
|
|
12
|
+
expect(result.text).toBe("aamupäivällä");
|
|
13
|
+
expect(result.start.get("hour")).toBe(9);
|
|
14
|
+
expect(result.start.get("minute")).toBe(0);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
testSingleCase(chrono, "päivällä", new Date(2012, 7, 10, 14, 0), (result) => {
|
|
18
|
+
expect(result.text).toBe("päivällä");
|
|
19
|
+
expect(result.start.get("hour")).toBe(12);
|
|
20
|
+
expect(result.start.get("minute")).toBe(0);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
testSingleCase(chrono, "iltapäivällä", new Date(2012, 7, 10, 14, 0), (result) => {
|
|
24
|
+
expect(result.text).toBe("iltapäivällä");
|
|
25
|
+
expect(result.start.get("hour")).toBe(15);
|
|
26
|
+
expect(result.start.get("minute")).toBe(0);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
testSingleCase(chrono, "illalla", new Date(2012, 7, 10, 14, 0), (result) => {
|
|
30
|
+
expect(result.text).toBe("illalla");
|
|
31
|
+
expect(result.start.get("hour")).toBe(18);
|
|
32
|
+
expect(result.start.get("minute")).toBe(0);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
testSingleCase(chrono, "yöllä", new Date(2012, 7, 10, 14, 0), (result) => {
|
|
36
|
+
expect(result.text).toBe("yöllä");
|
|
37
|
+
expect(result.start.get("hour")).toBe(22);
|
|
38
|
+
expect(result.start.get("minute")).toBe(0);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
testSingleCase(chrono, "keskiyöllä", new Date(2012, 7, 10, 14, 0), (result) => {
|
|
42
|
+
expect(result.text).toBe("keskiyöllä");
|
|
43
|
+
expect(result.start.get("hour")).toBe(0);
|
|
44
|
+
expect(result.start.get("minute")).toBe(0);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test("Test - 'viime yönä' (last night)", function () {
|
|
49
|
+
testSingleCase(chrono, "viime yönä", new Date(2012, 7, 10, 14, 0), (result) => {
|
|
50
|
+
expect(result.text).toBe("viime yönä");
|
|
51
|
+
expect(result.start.get("year")).toBe(2012);
|
|
52
|
+
expect(result.start.get("month")).toBe(8);
|
|
53
|
+
expect(result.start.get("day")).toBe(9);
|
|
54
|
+
expect(result.start.get("hour")).toBe(0);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as chrono from "../../src/locales/fi";
|
|
2
|
+
import { testSingleCase, testUnexpectedResult } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single expression", function () {
|
|
5
|
+
testSingleCase(chrono, "15. elokuuta", new Date(2012, 7, 10), (result) => {
|
|
6
|
+
expect(result.start.get("year")).toBe(2012);
|
|
7
|
+
expect(result.start.get("month")).toBe(8);
|
|
8
|
+
expect(result.start.get("day")).toBe(15);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
testSingleCase(chrono, "15 elokuuta 2012", new Date(2012, 7, 10), (result) => {
|
|
12
|
+
expect(result.start.get("year")).toBe(2012);
|
|
13
|
+
expect(result.start.get("month")).toBe(8);
|
|
14
|
+
expect(result.start.get("day")).toBe(15);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
testSingleCase(chrono, "15. elo 2012", new Date(2012, 7, 10), (result) => {
|
|
18
|
+
expect(result.start.get("year")).toBe(2012);
|
|
19
|
+
expect(result.start.get("month")).toBe(8);
|
|
20
|
+
expect(result.start.get("day")).toBe(15);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
testSingleCase(chrono, "3 tammikuuta", new Date(2012, 7, 10), (result) => {
|
|
24
|
+
expect(result.start.get("year")).toBe(2013);
|
|
25
|
+
expect(result.start.get("month")).toBe(1);
|
|
26
|
+
expect(result.start.get("day")).toBe(3);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
testSingleCase(chrono, "1 joulukuuta 2023", new Date(2023, 10, 1), (result) => {
|
|
30
|
+
expect(result.start.get("year")).toBe(2023);
|
|
31
|
+
expect(result.start.get("month")).toBe(12);
|
|
32
|
+
expect(result.start.get("day")).toBe(1);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test("Test - Range expression", function () {
|
|
37
|
+
testSingleCase(chrono, "15-16 elokuuta", new Date(2012, 7, 10), (result) => {
|
|
38
|
+
expect(result.start.get("year")).toBe(2012);
|
|
39
|
+
expect(result.start.get("month")).toBe(8);
|
|
40
|
+
expect(result.start.get("day")).toBe(15);
|
|
41
|
+
|
|
42
|
+
expect(result.end.get("year")).toBe(2012);
|
|
43
|
+
expect(result.end.get("month")).toBe(8);
|
|
44
|
+
expect(result.end.get("day")).toBe(16);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test("Test - Impossible Dates", function () {
|
|
49
|
+
testUnexpectedResult(chrono, "32 elokuuta", new Date(2012, 7, 10));
|
|
50
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as chrono from "../../src/locales/fi";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Time expression", function () {
|
|
5
|
+
testSingleCase(chrono, "klo 15:00", new Date(2012, 7, 10), (result) => {
|
|
6
|
+
expect(result.start.get("hour")).toBe(15);
|
|
7
|
+
expect(result.start.get("minute")).toBe(0);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
testSingleCase(chrono, "kello 8:30", new Date(2012, 7, 10), (result) => {
|
|
11
|
+
expect(result.start.get("hour")).toBe(8);
|
|
12
|
+
expect(result.start.get("minute")).toBe(30);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
testSingleCase(chrono, "klo 13.00", new Date(2012, 7, 10), (result) => {
|
|
16
|
+
expect(result.start.get("hour")).toBe(13);
|
|
17
|
+
expect(result.start.get("minute")).toBe(0);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
test("Test - Time range expression", function () {
|
|
22
|
+
testSingleCase(chrono, "klo 10:00-12:00", new Date(2012, 7, 10), (result) => {
|
|
23
|
+
expect(result.start.get("hour")).toBe(10);
|
|
24
|
+
expect(result.start.get("minute")).toBe(0);
|
|
25
|
+
|
|
26
|
+
expect(result.end.get("hour")).toBe(12);
|
|
27
|
+
expect(result.end.get("minute")).toBe(0);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
test("Test - Date and time expression", function () {
|
|
32
|
+
testSingleCase(chrono, "15 elokuuta 2012 klo 14:00", new Date(2012, 7, 10), (result) => {
|
|
33
|
+
expect(result.start.get("year")).toBe(2012);
|
|
34
|
+
expect(result.start.get("month")).toBe(8);
|
|
35
|
+
expect(result.start.get("day")).toBe(15);
|
|
36
|
+
expect(result.start.get("hour")).toBe(14);
|
|
37
|
+
expect(result.start.get("minute")).toBe(0);
|
|
38
|
+
});
|
|
39
|
+
});
|