chrono-node 2.7.9 → 2.8.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/dist/cjs/calculation/mergingCalculation.js +4 -5
- package/dist/cjs/calculation/mergingCalculation.js.map +1 -1
- package/dist/cjs/calculation/years.js +3 -4
- package/dist/cjs/calculation/years.js.map +1 -1
- package/dist/cjs/chrono.js.map +1 -1
- package/dist/cjs/common/abstractRefiners.js.map +1 -1
- package/dist/cjs/common/calculation/weekdays.js +6 -7
- package/dist/cjs/common/calculation/weekdays.js.map +1 -1
- package/dist/cjs/common/casualReferences.js +32 -35
- package/dist/cjs/common/casualReferences.js.map +1 -1
- package/dist/cjs/common/parsers/AbstractParserWithWordBoundary.js.map +1 -1
- package/dist/cjs/common/parsers/AbstractTimeExpressionParser.js.map +1 -1
- package/dist/cjs/common/parsers/ISOFormatParser.js.map +1 -1
- package/dist/cjs/common/parsers/SlashDateFormatParser.js +2 -2
- package/dist/cjs/common/parsers/SlashDateFormatParser.js.map +1 -1
- package/dist/cjs/common/refiners/AbstractMergeDateRangeRefiner.js.map +1 -1
- package/dist/cjs/common/refiners/AbstractMergeDateTimeRefiner.js +2 -2
- package/dist/cjs/common/refiners/AbstractMergeDateTimeRefiner.js.map +1 -1
- package/dist/cjs/common/refiners/ExtractTimezoneAbbrRefiner.js +1 -1
- package/dist/cjs/common/refiners/ExtractTimezoneAbbrRefiner.js.map +1 -1
- package/dist/cjs/common/refiners/ExtractTimezoneOffsetRefiner.js.map +1 -1
- package/dist/cjs/common/refiners/ForwardDateRefiner.js +47 -12
- package/dist/cjs/common/refiners/ForwardDateRefiner.js.map +1 -1
- package/dist/cjs/common/refiners/MergeWeekdayComponentRefiner.js.map +1 -1
- package/dist/cjs/common/refiners/OverlapRemovalRefiner.js.map +1 -1
- package/dist/cjs/common/refiners/UnlikelyFormatFilter.js.map +1 -1
- package/dist/cjs/configurations.js +1 -2
- package/dist/cjs/configurations.js.map +1 -1
- package/dist/cjs/debugging.d.ts +2 -2
- package/dist/cjs/index.js +25 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/locales/de/constants.js +8 -8
- package/dist/cjs/locales/de/constants.js.map +1 -1
- package/dist/cjs/locales/de/index.js +6 -6
- package/dist/cjs/locales/de/index.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DECasualDateParser.js +30 -16
- package/dist/cjs/locales/de/parsers/DECasualDateParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DECasualTimeParser.js +3 -3
- package/dist/cjs/locales/de/parsers/DECasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DEMonthNameLittleEndianParser.js +3 -3
- package/dist/cjs/locales/de/parsers/DEMonthNameLittleEndianParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DESpecificTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DETimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DETimeUnitRelativeFormatParser.js +3 -3
- package/dist/cjs/locales/de/parsers/DETimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DETimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/de/parsers/DETimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DEWeekdayParser.js +2 -2
- package/dist/cjs/locales/de/parsers/DEWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/en/configuration.js +1 -1
- package/dist/cjs/locales/en/configuration.js.map +1 -1
- package/dist/cjs/locales/en/constants.js +12 -12
- package/dist/cjs/locales/en/constants.js.map +1 -1
- package/dist/cjs/locales/en/index.js +3 -3
- package/dist/cjs/locales/en/index.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENCasualDateParser.js +24 -10
- package/dist/cjs/locales/en/parsers/ENCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENCasualTimeParser.js +22 -8
- package/dist/cjs/locales/en/parsers/ENCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENMonthNameLittleEndianParser.js +5 -5
- package/dist/cjs/locales/en/parsers/ENMonthNameLittleEndianParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENMonthNameMiddleEndianParser.js +5 -5
- package/dist/cjs/locales/en/parsers/ENMonthNameMiddleEndianParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENMonthNameParser.js +3 -3
- package/dist/cjs/locales/en/parsers/ENMonthNameParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENRelativeDateFormatParser.js +2 -2
- package/dist/cjs/locales/en/parsers/ENRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitAgoFormatParser.js +2 -2
- package/dist/cjs/locales/en/parsers/ENTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +2 -2
- package/dist/cjs/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitLaterFormatParser.js +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENWeekdayParser.js +2 -2
- package/dist/cjs/locales/en/parsers/ENWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENYearMonthDayParser.js +1 -1
- package/dist/cjs/locales/en/parsers/ENYearMonthDayParser.js.map +1 -1
- package/dist/cjs/locales/en/refiners/ENExtractYearSuffixRefiner.js +4 -1
- package/dist/cjs/locales/en/refiners/ENExtractYearSuffixRefiner.js.map +1 -1
- package/dist/cjs/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js +2 -2
- package/dist/cjs/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js.map +1 -1
- package/dist/cjs/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js +2 -2
- package/dist/cjs/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js.map +1 -1
- package/dist/cjs/locales/en/refiners/ENUnlikelyFormatFilter.js.map +1 -1
- package/dist/cjs/locales/es/constants.js +7 -7
- package/dist/cjs/locales/es/constants.js.map +1 -1
- package/dist/cjs/locales/es/index.js +6 -6
- package/dist/cjs/locales/es/index.js.map +1 -1
- package/dist/cjs/locales/es/parsers/ESCasualDateParser.js +22 -8
- package/dist/cjs/locales/es/parsers/ESCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/es/parsers/ESCasualTimeParser.js +2 -2
- package/dist/cjs/locales/es/parsers/ESCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/es/parsers/ESMonthNameLittleEndianParser.js +3 -3
- package/dist/cjs/locales/es/parsers/ESMonthNameLittleEndianParser.js.map +1 -1
- package/dist/cjs/locales/es/parsers/ESTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/es/parsers/ESTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/es/parsers/ESWeekdayParser.js +2 -2
- package/dist/cjs/locales/es/parsers/ESWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/fr/constants.js +8 -8
- package/dist/cjs/locales/fr/constants.js.map +1 -1
- package/dist/cjs/locales/fr/index.js +6 -6
- package/dist/cjs/locales/fr/index.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRCasualDateParser.js +25 -11
- package/dist/cjs/locales/fr/parsers/FRCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRMonthNameLittleEndianParser.js +5 -5
- package/dist/cjs/locales/fr/parsers/FRMonthNameLittleEndianParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRSpecificTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitAgoFormatParser.js +2 -2
- package/dist/cjs/locales/fr/parsers/FRTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +3 -3
- package/dist/cjs/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRWeekdayParser.js +2 -2
- package/dist/cjs/locales/fr/parsers/FRWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/it/constants.js +10 -10
- package/dist/cjs/locales/it/constants.js.map +1 -1
- package/dist/cjs/locales/it/index.js +6 -6
- package/dist/cjs/locales/it/index.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualDateParser.js +24 -10
- package/dist/cjs/locales/it/parsers/ITCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js +2 -2
- package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualYearMonthDayParser.js +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualYearMonthDayParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITMonthNameLittleEndianParser.js +5 -5
- package/dist/cjs/locales/it/parsers/ITMonthNameLittleEndianParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITMonthNameMiddleEndianParser.js +5 -5
- package/dist/cjs/locales/it/parsers/ITMonthNameMiddleEndianParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITMonthNameParser.js +3 -3
- package/dist/cjs/locales/it/parsers/ITMonthNameParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js +2 -2
- package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js +2 -2
- package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js +2 -2
- package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.js +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITWeekdayParser.js +2 -2
- package/dist/cjs/locales/it/parsers/ITWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/it/refiners/ITMergeRelativeDateRefiner.js +2 -2
- package/dist/cjs/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +1 -1
- package/dist/cjs/locales/ja/constants.d.ts +24 -0
- package/dist/cjs/locales/ja/constants.js +39 -2
- package/dist/cjs/locales/ja/constants.js.map +1 -1
- package/dist/cjs/locales/ja/index.d.ts +1 -1
- package/dist/cjs/locales/ja/index.js +32 -12
- package/dist/cjs/locales/ja/index.js.map +1 -1
- package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js +23 -9
- package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/ja/parsers/JPSlashDateFormatParser.d.ts +6 -0
- package/dist/cjs/locales/ja/parsers/JPSlashDateFormatParser.js +38 -0
- package/dist/cjs/locales/ja/parsers/JPSlashDateFormatParser.js.map +1 -0
- package/dist/cjs/locales/ja/parsers/JPStandardParser.js +5 -5
- package/dist/cjs/locales/ja/parsers/JPStandardParser.js.map +1 -1
- package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.d.ts +6 -0
- package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.js +261 -0
- package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.js.map +1 -0
- package/dist/cjs/locales/ja/parsers/JPWeekdayParser.d.ts +6 -0
- package/dist/cjs/locales/ja/parsers/JPWeekdayParser.js +30 -0
- package/dist/cjs/locales/ja/parsers/JPWeekdayParser.js.map +1 -0
- package/dist/cjs/locales/ja/parsers/JPWeekdayWithParenthesesParser.d.ts +6 -0
- package/dist/cjs/locales/ja/parsers/JPWeekdayWithParenthesesParser.js +19 -0
- package/dist/cjs/locales/ja/parsers/JPWeekdayWithParenthesesParser.js.map +1 -0
- package/dist/cjs/locales/ja/refiners/JPMergeDateRangeRefiner.js +1 -1
- package/dist/cjs/locales/ja/refiners/JPMergeDateRangeRefiner.js.map +1 -1
- package/dist/cjs/locales/ja/refiners/JPMergeDateTimeRefiner.d.ts +4 -0
- package/dist/cjs/locales/ja/refiners/JPMergeDateTimeRefiner.js +13 -0
- package/dist/cjs/locales/ja/refiners/JPMergeDateTimeRefiner.js.map +1 -0
- package/dist/cjs/locales/ja/refiners/JPMergeWeekdayComponentRefiner.d.ts +6 -0
- package/dist/cjs/locales/ja/refiners/JPMergeWeekdayComponentRefiner.js +22 -0
- package/dist/cjs/locales/ja/refiners/JPMergeWeekdayComponentRefiner.js.map +1 -0
- package/dist/cjs/locales/nl/constants.js +10 -10
- package/dist/cjs/locales/nl/constants.js.map +1 -1
- package/dist/cjs/locales/nl/index.js +6 -6
- package/dist/cjs/locales/nl/index.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualDateParser.js +22 -8
- package/dist/cjs/locales/nl/parsers/NLCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualDateTimeParser.js +4 -4
- package/dist/cjs/locales/nl/parsers/NLCasualDateTimeParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js +2 -2
- package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualYearMonthDayParser.js +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualYearMonthDayParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLMonthNameMiddleEndianParser.js +5 -5
- package/dist/cjs/locales/nl/parsers/NLMonthNameMiddleEndianParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLMonthNameParser.js +3 -3
- package/dist/cjs/locales/nl/parsers/NLMonthNameParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLRelativeDateFormatParser.js +2 -2
- package/dist/cjs/locales/nl/parsers/NLRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +2 -2
- package/dist/cjs/locales/nl/parsers/NLTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js +2 -2
- package/dist/cjs/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLWeekdayParser.js +2 -2
- package/dist/cjs/locales/nl/parsers/NLWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/pt/constants.js +2 -2
- package/dist/cjs/locales/pt/constants.js.map +1 -1
- package/dist/cjs/locales/pt/index.js +6 -6
- package/dist/cjs/locales/pt/index.js.map +1 -1
- package/dist/cjs/locales/pt/parsers/PTCasualDateParser.js +22 -8
- package/dist/cjs/locales/pt/parsers/PTCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.js +2 -2
- package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/pt/parsers/PTMonthNameLittleEndianParser.js +3 -3
- package/dist/cjs/locales/pt/parsers/PTMonthNameLittleEndianParser.js.map +1 -1
- package/dist/cjs/locales/pt/parsers/PTWeekdayParser.js +2 -2
- package/dist/cjs/locales/pt/parsers/PTWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/ru/constants.d.ts +1 -1
- package/dist/cjs/locales/ru/constants.js +10 -10
- package/dist/cjs/locales/ru/constants.js.map +1 -1
- package/dist/cjs/locales/ru/index.js +6 -6
- package/dist/cjs/locales/ru/index.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUCasualDateParser.js +22 -8
- package/dist/cjs/locales/ru/parsers/RUCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js +24 -10
- package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUMonthNameLittleEndianParser.js +5 -5
- package/dist/cjs/locales/ru/parsers/RUMonthNameLittleEndianParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUMonthNameParser.js +3 -3
- package/dist/cjs/locales/ru/parsers/RUMonthNameParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js +2 -2
- package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js +2 -2
- package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +2 -2
- package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUWeekdayParser.js +2 -2
- package/dist/cjs/locales/ru/parsers/RUWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/uk/constants.d.ts +1 -1
- package/dist/cjs/locales/uk/constants.js +10 -10
- package/dist/cjs/locales/uk/constants.js.map +1 -1
- package/dist/cjs/locales/uk/index.js +6 -6
- package/dist/cjs/locales/uk/index.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKCasualDateParser.js +22 -8
- package/dist/cjs/locales/uk/parsers/UKCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js +24 -10
- package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKMonthNameLittleEndianParser.js +5 -5
- package/dist/cjs/locales/uk/parsers/UKMonthNameLittleEndianParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKMonthNameParser.js +3 -3
- package/dist/cjs/locales/uk/parsers/UKMonthNameParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js +2 -2
- package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js +2 -2
- package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js +2 -2
- package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKWeekdayParser.js +2 -2
- package/dist/cjs/locales/uk/parsers/UKWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/constants.js +3 -3
- package/dist/cjs/locales/zh/hans/constants.js.map +1 -1
- package/dist/cjs/locales/zh/hans/index.js +6 -6
- package/dist/cjs/locales/zh/hans/index.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansCasualDateParser.js +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDateParser.js +4 -4
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js +2 -2
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +7 -7
- package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansWeekdayParser.js +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/constants.js +3 -3
- package/dist/cjs/locales/zh/hant/constants.js.map +1 -1
- package/dist/cjs/locales/zh/hant/index.js +6 -6
- package/dist/cjs/locales/zh/hant/index.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantCasualDateParser.js +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDateParser.js +4 -4
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js +2 -2
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +7 -7
- package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantWeekdayParser.js +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/zh/index.js +28 -14
- package/dist/cjs/locales/zh/index.js.map +1 -1
- package/dist/cjs/results.d.ts +1 -0
- package/dist/cjs/results.js +22 -17
- package/dist/cjs/results.js.map +1 -1
- package/dist/cjs/timezone.js +6 -6
- package/dist/cjs/timezone.js.map +1 -1
- package/dist/cjs/types.d.ts +2 -2
- package/dist/cjs/types.js +3 -3
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/dates.d.ts +3 -0
- package/dist/cjs/utils/dates.js +16 -0
- package/dist/cjs/utils/dates.js.map +1 -0
- package/dist/cjs/utils/dayjs.js +6 -7
- package/dist/cjs/utils/dayjs.js.map +1 -1
- package/dist/cjs/utils/pattern.d.ts +1 -1
- package/dist/cjs/utils/pattern.js +3 -4
- package/dist/cjs/utils/pattern.js.map +1 -1
- package/dist/cjs/utils/timeunits.d.ts +1 -1
- package/dist/cjs/utils/timeunits.js +2 -3
- package/dist/cjs/utils/timeunits.js.map +1 -1
- package/dist/esm/calculation/mergingCalculation.js.map +1 -1
- package/dist/esm/calculation/years.js.map +1 -1
- package/dist/esm/chrono.js +7 -1
- package/dist/esm/chrono.js.map +1 -1
- package/dist/esm/common/abstractRefiners.js.map +1 -1
- package/dist/esm/common/calculation/weekdays.js.map +1 -1
- package/dist/esm/common/casualReferences.js +8 -10
- package/dist/esm/common/casualReferences.js.map +1 -1
- package/dist/esm/common/parsers/AbstractParserWithWordBoundary.js +2 -4
- package/dist/esm/common/parsers/AbstractParserWithWordBoundary.js.map +1 -1
- package/dist/esm/common/parsers/AbstractTimeExpressionParser.js +7 -6
- package/dist/esm/common/parsers/AbstractTimeExpressionParser.js.map +1 -1
- package/dist/esm/common/parsers/ISOFormatParser.js.map +1 -1
- package/dist/esm/common/parsers/SlashDateFormatParser.js +2 -0
- package/dist/esm/common/parsers/SlashDateFormatParser.js.map +1 -1
- package/dist/esm/common/refiners/AbstractMergeDateRangeRefiner.js.map +1 -1
- package/dist/esm/common/refiners/ExtractTimezoneAbbrRefiner.js +1 -0
- package/dist/esm/common/refiners/ExtractTimezoneAbbrRefiner.js.map +1 -1
- package/dist/esm/common/refiners/ExtractTimezoneOffsetRefiner.js.map +1 -1
- package/dist/esm/common/refiners/ForwardDateRefiner.js +14 -12
- package/dist/esm/common/refiners/ForwardDateRefiner.js.map +1 -1
- package/dist/esm/common/refiners/MergeWeekdayComponentRefiner.js.map +1 -1
- package/dist/esm/common/refiners/OverlapRemovalRefiner.js.map +1 -1
- package/dist/esm/common/refiners/UnlikelyFormatFilter.js +1 -0
- package/dist/esm/common/refiners/UnlikelyFormatFilter.js.map +1 -1
- package/dist/esm/debugging.d.ts +2 -2
- package/dist/esm/debugging.js +1 -0
- package/dist/esm/debugging.js.map +1 -1
- package/dist/esm/locales/de/constants.js.map +1 -1
- package/dist/esm/locales/de/parsers/DECasualDateParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DECasualTimeParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DEMonthNameLittleEndianParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DESpecificTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DETimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DEWeekdayParser.js.map +1 -1
- package/dist/esm/locales/en/constants.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENCasualDateParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENMonthNameLittleEndianParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.js +1 -0
- package/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENMonthNameParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js +1 -0
- package/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +1 -0
- package/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js +1 -0
- package/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js +1 -0
- package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENWeekdayParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENYearMonthDayParser.js +1 -0
- package/dist/esm/locales/en/parsers/ENYearMonthDayParser.js.map +1 -1
- package/dist/esm/locales/en/refiners/ENExtractYearSuffixRefiner.js +3 -0
- package/dist/esm/locales/en/refiners/ENExtractYearSuffixRefiner.js.map +1 -1
- package/dist/esm/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js.map +1 -1
- package/dist/esm/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js.map +1 -1
- package/dist/esm/locales/en/refiners/ENUnlikelyFormatFilter.js.map +1 -1
- package/dist/esm/locales/es/constants.js.map +1 -1
- package/dist/esm/locales/es/parsers/ESCasualDateParser.js.map +1 -1
- package/dist/esm/locales/es/parsers/ESCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/es/parsers/ESMonthNameLittleEndianParser.js.map +1 -1
- package/dist/esm/locales/es/parsers/ESWeekdayParser.js.map +1 -1
- package/dist/esm/locales/fr/constants.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRCasualDateParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRMonthNameLittleEndianParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRSpecificTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRWeekdayParser.js.map +1 -1
- package/dist/esm/locales/it/constants.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITCasualDateParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITCasualYearMonthDayParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITMonthNameLittleEndianParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITMonthNameMiddleEndianParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITMonthNameParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js +1 -0
- package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js +1 -0
- package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITWeekdayParser.js.map +1 -1
- package/dist/esm/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +1 -1
- package/dist/esm/locales/ja/constants.d.ts +24 -0
- package/dist/esm/locales/ja/constants.js +36 -0
- package/dist/esm/locales/ja/constants.js.map +1 -1
- package/dist/esm/locales/ja/index.d.ts +1 -1
- package/dist/esm/locales/ja/index.js +27 -7
- package/dist/esm/locales/ja/index.js.map +1 -1
- package/dist/esm/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
- package/dist/esm/locales/ja/parsers/JPSlashDateFormatParser.d.ts +6 -0
- package/dist/esm/locales/ja/parsers/JPSlashDateFormatParser.js +35 -0
- package/dist/esm/locales/ja/parsers/JPSlashDateFormatParser.js.map +1 -0
- package/dist/esm/locales/ja/parsers/JPStandardParser.js.map +1 -1
- package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.d.ts +6 -0
- package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.js +258 -0
- package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.js.map +1 -0
- package/dist/esm/locales/ja/parsers/JPWeekdayParser.d.ts +6 -0
- package/dist/esm/locales/ja/parsers/JPWeekdayParser.js +27 -0
- package/dist/esm/locales/ja/parsers/JPWeekdayParser.js.map +1 -0
- package/dist/esm/locales/ja/parsers/JPWeekdayWithParenthesesParser.d.ts +6 -0
- package/dist/esm/locales/ja/parsers/JPWeekdayWithParenthesesParser.js +16 -0
- package/dist/esm/locales/ja/parsers/JPWeekdayWithParenthesesParser.js.map +1 -0
- package/dist/esm/locales/ja/refiners/JPMergeDateRangeRefiner.js +1 -1
- package/dist/esm/locales/ja/refiners/JPMergeDateRangeRefiner.js.map +1 -1
- package/dist/esm/locales/ja/refiners/JPMergeDateTimeRefiner.d.ts +4 -0
- package/dist/esm/locales/ja/refiners/JPMergeDateTimeRefiner.js +7 -0
- package/dist/esm/locales/ja/refiners/JPMergeDateTimeRefiner.js.map +1 -0
- package/dist/esm/locales/ja/refiners/JPMergeWeekdayComponentRefiner.d.ts +6 -0
- package/dist/esm/locales/ja/refiners/JPMergeWeekdayComponentRefiner.js +19 -0
- package/dist/esm/locales/ja/refiners/JPMergeWeekdayComponentRefiner.js.map +1 -0
- package/dist/esm/locales/nl/constants.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualDateParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualDateTimeParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualYearMonthDayParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLMonthNameMiddleEndianParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLMonthNameParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +1 -0
- package/dist/esm/locales/nl/parsers/NLTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +1 -0
- package/dist/esm/locales/nl/parsers/NLTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLWeekdayParser.js.map +1 -1
- package/dist/esm/locales/pt/constants.js.map +1 -1
- package/dist/esm/locales/pt/parsers/PTCasualDateParser.js.map +1 -1
- package/dist/esm/locales/pt/parsers/PTCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/pt/parsers/PTMonthNameLittleEndianParser.js.map +1 -1
- package/dist/esm/locales/pt/parsers/PTWeekdayParser.js.map +1 -1
- package/dist/esm/locales/ru/constants.d.ts +1 -1
- package/dist/esm/locales/ru/constants.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUCasualDateParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUMonthNameLittleEndianParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUMonthNameParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUWeekdayParser.js.map +1 -1
- package/dist/esm/locales/uk/constants.d.ts +1 -1
- package/dist/esm/locales/uk/constants.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKCasualDateParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKMonthNameLittleEndianParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKMonthNameParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKWeekdayParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/constants.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansCasualDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansWeekdayParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/constants.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantCasualDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantWeekdayParser.js.map +1 -1
- package/dist/esm/results.d.ts +1 -0
- package/dist/esm/results.js +29 -14
- package/dist/esm/results.js.map +1 -1
- package/dist/esm/timezone.js.map +1 -1
- package/dist/esm/types.d.ts +2 -2
- package/dist/esm/utils/dates.d.ts +3 -0
- package/dist/esm/utils/dates.js +12 -0
- package/dist/esm/utils/dates.js.map +1 -0
- package/dist/esm/utils/dayjs.js.map +1 -1
- package/dist/esm/utils/pattern.d.ts +1 -1
- package/dist/esm/utils/pattern.js.map +1 -1
- package/dist/esm/utils/timeunits.d.ts +1 -1
- package/dist/esm/utils/timeunits.js.map +1 -1
- package/package.json +16 -16
- package/src/common/casualReferences.ts +8 -10
- package/src/common/refiners/ForwardDateRefiner.ts +17 -11
- package/src/locales/en/refiners/ENExtractYearSuffixRefiner.ts +4 -4
- package/src/locales/ja/constants.ts +40 -0
- package/src/locales/ja/index.ts +35 -7
- package/src/locales/ja/parsers/JPSlashDateFormatParser.ts +53 -0
- package/src/locales/ja/parsers/JPTimeExpressionParser.ts +281 -0
- package/src/locales/ja/parsers/JPWeekdayParser.ts +35 -0
- package/src/locales/ja/parsers/JPWeekdayWithParenthesesParser.ts +25 -0
- package/src/locales/ja/refiners/JPMergeDateRangeRefiner.ts +2 -2
- package/src/locales/ja/refiners/JPMergeDateTimeRefiner.ts +7 -0
- package/src/locales/ja/refiners/JPMergeWeekdayComponentRefiner.ts +30 -0
- package/src/results.ts +18 -13
- package/src/utils/dates.ts +24 -0
- package/src/utils/dayjs.ts +6 -0
- package/test/de/de_dash.test.ts +19 -3
- package/test/en/en_casual.test.ts +4 -1
- package/test/en/en_relative.test.ts +126 -39
- package/test/en/en_slash.test.ts +8 -0
- package/test/en/en_time_exp.test.ts +27 -18
- package/test/ja/ja_slash_date_format.test.ts +60 -0
- package/test/ja/ja_time_exp.test.ts +244 -0
- package/test/ja/ja_weekday.test.ts +183 -0
- package/test/nl/nl_relative.test.ts +33 -17
- package/test/result.test.ts +24 -0
- package/test/system.test.ts +1 -1
- package/test/system_timezone.test.ts +20 -4
|
@@ -10,17 +10,18 @@ export default class ENExtractYearSuffixRefiner implements Refiner {
|
|
|
10
10
|
if (!result.start.isDateWithUnknownYear()) {
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
13
|
-
|
|
14
13
|
const suffix = context.text.substring(result.index + result.text.length);
|
|
15
14
|
const match = YEAR_SUFFIX_PATTERN.exec(suffix);
|
|
16
15
|
if (!match) {
|
|
17
16
|
return;
|
|
18
17
|
}
|
|
19
|
-
|
|
18
|
+
// If the suffix match is just a short number, e.g. "14/4 90", don't assume it year.
|
|
19
|
+
if (match[0].trim().length <= 3) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
20
22
|
context.debug(() => {
|
|
21
23
|
console.log(`Extracting year: '${match[0]}' into : ${result}`);
|
|
22
24
|
});
|
|
23
|
-
|
|
24
25
|
const year = parseYear(match[YEAR_GROUP]);
|
|
25
26
|
if (result.end != null) {
|
|
26
27
|
result.end.assign("year", year);
|
|
@@ -28,7 +29,6 @@ export default class ENExtractYearSuffixRefiner implements Refiner {
|
|
|
28
29
|
result.start.assign("year", year);
|
|
29
30
|
result.text += match[0];
|
|
30
31
|
});
|
|
31
|
-
|
|
32
32
|
return results;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
export const NUMBER = {
|
|
2
|
+
"零": 0,
|
|
3
|
+
"〇": 0,
|
|
4
|
+
"一": 1,
|
|
5
|
+
"二": 2,
|
|
6
|
+
"三": 3,
|
|
7
|
+
"四": 4,
|
|
8
|
+
"五": 5,
|
|
9
|
+
"六": 6,
|
|
10
|
+
"七": 7,
|
|
11
|
+
"八": 8,
|
|
12
|
+
"九": 9,
|
|
13
|
+
"十": 10,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const WEEKDAY_OFFSET = {
|
|
17
|
+
"日": 0,
|
|
18
|
+
"月": 1,
|
|
19
|
+
"火": 2,
|
|
20
|
+
"水": 3,
|
|
21
|
+
"木": 4,
|
|
22
|
+
"金": 5,
|
|
23
|
+
"土": 6,
|
|
24
|
+
};
|
|
25
|
+
|
|
1
26
|
/**
|
|
2
27
|
* to-hankaku.js
|
|
3
28
|
* convert to ascii code strings.
|
|
@@ -22,3 +47,18 @@ export function toHankaku(text) {
|
|
|
22
47
|
function alphaNum(token) {
|
|
23
48
|
return String.fromCharCode(token.charCodeAt(0) - 65248);
|
|
24
49
|
}
|
|
50
|
+
|
|
51
|
+
export function jaStringToNumber(text: string) {
|
|
52
|
+
let number = 0;
|
|
53
|
+
|
|
54
|
+
for (let i = 0; i < text.length; i++) {
|
|
55
|
+
const char = text[i];
|
|
56
|
+
if (char === "十") {
|
|
57
|
+
number = number === 0 ? NUMBER[char] : number * NUMBER[char];
|
|
58
|
+
} else {
|
|
59
|
+
number += NUMBER[char];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return number;
|
|
64
|
+
}
|
package/src/locales/ja/index.ts
CHANGED
|
@@ -7,17 +7,25 @@
|
|
|
7
7
|
import JPStandardParser from "./parsers/JPStandardParser";
|
|
8
8
|
import JPMergeDateRangeRefiner from "./refiners/JPMergeDateRangeRefiner";
|
|
9
9
|
import JPCasualDateParser from "./parsers/JPCasualDateParser";
|
|
10
|
+
import JPWeekdayParser from "./parsers/JPWeekdayParser";
|
|
11
|
+
import JPSlashDateFormatParser from "./parsers/JPSlashDateFormatParser";
|
|
12
|
+
import JPTimeExpressionParser from "./parsers/JPTimeExpressionParser";
|
|
13
|
+
import JPMergeDateTimeRefiner from "./refiners/JPMergeDateTimeRefiner";
|
|
10
14
|
|
|
11
15
|
import { Chrono, Configuration, Parser, Refiner } from "../../chrono";
|
|
12
16
|
import { ParsingResult, ParsingComponents, ReferenceWithTimezone } from "../../results";
|
|
13
17
|
import { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday } from "../../types";
|
|
18
|
+
import JPMergeWeekdayComponentRefiner from "./refiners/JPMergeWeekdayComponentRefiner";
|
|
19
|
+
import JPWeekdayWithParenthesesParser from "./parsers/JPWeekdayWithParenthesesParser";
|
|
20
|
+
import { includeCommonConfiguration } from "../../configurations";
|
|
21
|
+
import MergeWeekdayComponentRefiner from "../../common/refiners/MergeWeekdayComponentRefiner";
|
|
14
22
|
|
|
15
23
|
export { Chrono, Parser, Refiner, ParsingResult, ParsingComponents, ReferenceWithTimezone };
|
|
16
24
|
export { Component, ParsedResult, ParsingOption, ParsingReference, Meridiem, Weekday };
|
|
17
25
|
|
|
18
26
|
// Shortcuts
|
|
19
27
|
export const casual = new Chrono(createCasualConfiguration());
|
|
20
|
-
export const strict = new Chrono(createConfiguration());
|
|
28
|
+
export const strict = new Chrono(createConfiguration(true));
|
|
21
29
|
|
|
22
30
|
export function parse(text: string, ref?: ParsingReference | Date, option?: ParsingOption): ParsedResult[] {
|
|
23
31
|
return casual.parse(text, ref, option);
|
|
@@ -31,7 +39,7 @@ export function parseDate(text: string, ref?: ParsingReference | Date, option?:
|
|
|
31
39
|
* @ignore (to be documented later)
|
|
32
40
|
*/
|
|
33
41
|
export function createCasualConfiguration(): Configuration {
|
|
34
|
-
const option = createConfiguration();
|
|
42
|
+
const option = createConfiguration(false);
|
|
35
43
|
option.parsers.unshift(new JPCasualDateParser());
|
|
36
44
|
return option;
|
|
37
45
|
}
|
|
@@ -39,9 +47,29 @@ export function createCasualConfiguration(): Configuration {
|
|
|
39
47
|
/**
|
|
40
48
|
* @ignore (to be documented later)
|
|
41
49
|
*/
|
|
42
|
-
export function createConfiguration(): Configuration {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
50
|
+
export function createConfiguration(strictMode = true): Configuration {
|
|
51
|
+
const configuration = includeCommonConfiguration(
|
|
52
|
+
{
|
|
53
|
+
parsers: [
|
|
54
|
+
new JPStandardParser(),
|
|
55
|
+
new JPWeekdayParser(),
|
|
56
|
+
new JPWeekdayWithParenthesesParser(),
|
|
57
|
+
new JPSlashDateFormatParser(),
|
|
58
|
+
new JPTimeExpressionParser(),
|
|
59
|
+
],
|
|
60
|
+
refiners: [
|
|
61
|
+
new JPMergeWeekdayComponentRefiner(), // Note: should be before JPMergeDateTimeRefiner and JPMergeDateRangeRefiner
|
|
62
|
+
new JPMergeDateTimeRefiner(),
|
|
63
|
+
new JPMergeDateRangeRefiner(),
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
strictMode
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
// Note: Remove because it is not used in Japanese grammar
|
|
70
|
+
configuration.refiners = configuration.refiners.filter(
|
|
71
|
+
(refiner) => !(refiner instanceof MergeWeekdayComponentRefiner)
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
return configuration;
|
|
47
75
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Parser, ParsingContext } from "../../../chrono";
|
|
2
|
+
import { ParsingComponents } from "../../../results";
|
|
3
|
+
import { findMostLikelyADYear, findYearClosestToRef } from "../../../calculation/years";
|
|
4
|
+
import { toHankaku } from "../constants";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Date format with slash "/" between numbers. YYYY/MM/DD or MM/DD
|
|
8
|
+
* Big-endian slash format is used in Japan.
|
|
9
|
+
* For examples:
|
|
10
|
+
* - 7/31
|
|
11
|
+
* - 2020/7/12
|
|
12
|
+
*/
|
|
13
|
+
const PATTERN = new RegExp(
|
|
14
|
+
"([0-90-9]{4}[\\/|\\/])?" + "([0-10-1]{0,1}[0-90-9]{1})(?:[\\/|\\/]([0-30-3]{0,1}[0-90-9]{1}))",
|
|
15
|
+
"i"
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const YEAR_GROUP = 1;
|
|
19
|
+
const MONTH_GROUP = 2;
|
|
20
|
+
const DAY_GROUP = 3;
|
|
21
|
+
|
|
22
|
+
export default class JPSlashDateFormatParser implements Parser {
|
|
23
|
+
pattern(): RegExp {
|
|
24
|
+
return PATTERN;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
extract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
|
|
28
|
+
const result = context.createParsingComponents();
|
|
29
|
+
const month = parseInt(toHankaku(match[MONTH_GROUP]));
|
|
30
|
+
const day = parseInt(toHankaku(match[DAY_GROUP]));
|
|
31
|
+
if (month < 1 || month > 12) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (day < 1 || day > 31) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
result.assign("day", day);
|
|
40
|
+
result.assign("month", month);
|
|
41
|
+
|
|
42
|
+
if (match[YEAR_GROUP]) {
|
|
43
|
+
const rawYearNumber = parseInt(toHankaku(match[YEAR_GROUP]));
|
|
44
|
+
const year = findMostLikelyADYear(rawYearNumber);
|
|
45
|
+
result.assign("year", year);
|
|
46
|
+
} else {
|
|
47
|
+
const year = findYearClosestToRef(context.reference.instant, day, month);
|
|
48
|
+
result.imply("year", year);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import { ParsingContext } from "../../../chrono";
|
|
2
|
+
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
|
|
3
|
+
import { Meridiem } from "../../../types";
|
|
4
|
+
import { NUMBER, jaStringToNumber, toHankaku } from "../constants";
|
|
5
|
+
|
|
6
|
+
const FIRST_REG_PATTERN = new RegExp(
|
|
7
|
+
"(?:" +
|
|
8
|
+
"(午前|午後|A.M.|P.M.|AM|PM)" +
|
|
9
|
+
")?" +
|
|
10
|
+
"(?:[\\s,,、]*)" +
|
|
11
|
+
"(?:([0-90-9]+|[" +
|
|
12
|
+
Object.keys(NUMBER).join("") +
|
|
13
|
+
"]+)(?:\\s*)(?:時|:|:)" +
|
|
14
|
+
"(?:\\s*)" +
|
|
15
|
+
"([0-90-9]+|半|[" +
|
|
16
|
+
Object.keys(NUMBER).join("") +
|
|
17
|
+
"]+)?(?:\\s*)(?:分|:|:)?" +
|
|
18
|
+
"(?:\\s*)" +
|
|
19
|
+
"([0-90-9]+|[" +
|
|
20
|
+
Object.keys(NUMBER).join("") +
|
|
21
|
+
"]+)?(?:\\s*)(?:秒)?)" +
|
|
22
|
+
"(?:\\s*(A.M.|P.M.|AM?|PM?))?",
|
|
23
|
+
"i"
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
const SECOND_REG_PATTERN = new RegExp(
|
|
27
|
+
"(?:^\\s*(?:から|\\-|\\–|\\-|\\~|\\〜)\\s*)" +
|
|
28
|
+
"(?:" +
|
|
29
|
+
"(午前|午後|A.M.|P.M.|AM|PM)" +
|
|
30
|
+
")?" +
|
|
31
|
+
"(?:[\\s,,、]*)" +
|
|
32
|
+
"(?:([0-90-9]+|[" +
|
|
33
|
+
Object.keys(NUMBER).join("") +
|
|
34
|
+
"]+)(?:\\s*)(?:時|:|:)" +
|
|
35
|
+
"(?:\\s*)" +
|
|
36
|
+
"([0-90-9]+|半|[" +
|
|
37
|
+
Object.keys(NUMBER).join("") +
|
|
38
|
+
"]+)?(?:\\s*)(?:分|:|:)?" +
|
|
39
|
+
"(?:\\s*)" +
|
|
40
|
+
"([0-90-9]+|[" +
|
|
41
|
+
Object.keys(NUMBER).join("") +
|
|
42
|
+
"]+)?(?:\\s*)(?:秒)?)" +
|
|
43
|
+
"(?:\\s*(A.M.|P.M.|AM?|PM?))?",
|
|
44
|
+
"i"
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
const AM_PM_HOUR_GROUP_1 = 1;
|
|
48
|
+
const HOUR_GROUP = 2;
|
|
49
|
+
const MINUTE_GROUP = 3;
|
|
50
|
+
const SECOND_GROUP = 4;
|
|
51
|
+
const AM_PM_HOUR_GROUP_2 = 5;
|
|
52
|
+
|
|
53
|
+
export default class JPTimeExpressionParser extends AbstractParserWithWordBoundaryChecking {
|
|
54
|
+
innerPattern(): RegExp {
|
|
55
|
+
return FIRST_REG_PATTERN;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
innerExtract(context: ParsingContext, match: RegExpMatchArray) {
|
|
59
|
+
// This pattern can be overlaped Ex. [12] AM, 1[2] AM
|
|
60
|
+
if (match.index > 0 && context.text[match.index - 1].match(/\w/)) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const result = context.createParsingResult(match.index, match[0]);
|
|
65
|
+
|
|
66
|
+
let hour = 0;
|
|
67
|
+
let minute = 0;
|
|
68
|
+
let meridiem = -1;
|
|
69
|
+
|
|
70
|
+
// ----- Second
|
|
71
|
+
if (match[SECOND_GROUP]) {
|
|
72
|
+
let second = parseInt(toHankaku(match[SECOND_GROUP]));
|
|
73
|
+
if (isNaN(second)) {
|
|
74
|
+
second = jaStringToNumber(match[SECOND_GROUP]);
|
|
75
|
+
}
|
|
76
|
+
if (second >= 60) return null;
|
|
77
|
+
result.start.assign("second", second);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
hour = parseInt(toHankaku(match[HOUR_GROUP]));
|
|
81
|
+
if (isNaN(hour)) {
|
|
82
|
+
hour = jaStringToNumber(match[HOUR_GROUP]);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// ----- Minutes
|
|
86
|
+
if (match[MINUTE_GROUP]) {
|
|
87
|
+
if (match[MINUTE_GROUP] === "半") {
|
|
88
|
+
minute = 30;
|
|
89
|
+
} else {
|
|
90
|
+
minute = parseInt(toHankaku(match[MINUTE_GROUP]));
|
|
91
|
+
if (isNaN(minute)) {
|
|
92
|
+
minute = jaStringToNumber(match[MINUTE_GROUP]);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
} else if (hour > 100) {
|
|
96
|
+
minute = hour % 100;
|
|
97
|
+
hour = Math.floor(hour / 100);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (minute >= 60) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (hour > 24) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
if (hour >= 12) {
|
|
108
|
+
meridiem = Meridiem.PM;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// ----- AM & PM
|
|
112
|
+
if (match[AM_PM_HOUR_GROUP_1]) {
|
|
113
|
+
if (hour > 12) return null;
|
|
114
|
+
const AMPMString = match[AM_PM_HOUR_GROUP_1];
|
|
115
|
+
const FirstAMPMString = AMPMString[0].toLowerCase();
|
|
116
|
+
if (AMPMString === "午前" || FirstAMPMString === "a") {
|
|
117
|
+
meridiem = Meridiem.AM;
|
|
118
|
+
if (hour === 12) hour = 0;
|
|
119
|
+
} else if (AMPMString === "午後" || FirstAMPMString === "p") {
|
|
120
|
+
meridiem = Meridiem.PM;
|
|
121
|
+
if (hour != 12) hour += 12;
|
|
122
|
+
}
|
|
123
|
+
} else if (match[AM_PM_HOUR_GROUP_2]) {
|
|
124
|
+
if (hour > 12) return null;
|
|
125
|
+
const ampm = match[AM_PM_HOUR_GROUP_2][0].toLowerCase();
|
|
126
|
+
if (ampm === "a") {
|
|
127
|
+
meridiem = Meridiem.AM;
|
|
128
|
+
if (hour === 12) hour = 0;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (ampm === "p") {
|
|
132
|
+
meridiem = Meridiem.PM;
|
|
133
|
+
if (hour != 12) hour += 12;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
result.start.assign("hour", hour);
|
|
138
|
+
result.start.assign("minute", minute);
|
|
139
|
+
|
|
140
|
+
if (meridiem >= 0) {
|
|
141
|
+
result.start.assign("meridiem", meridiem);
|
|
142
|
+
} else {
|
|
143
|
+
if (hour < 12) {
|
|
144
|
+
result.start.imply("meridiem", 0);
|
|
145
|
+
} else {
|
|
146
|
+
result.start.imply("meridiem", 1);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// =============================================================================================
|
|
151
|
+
// Extracting the 'to' chunk
|
|
152
|
+
// =============================================================================================
|
|
153
|
+
|
|
154
|
+
match = SECOND_REG_PATTERN.exec(context.text.substring(result.index + result.text.length));
|
|
155
|
+
if (!match) {
|
|
156
|
+
// Not accept number only result
|
|
157
|
+
if (result.text.match(/^\d+$/)) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
result.end = context.createParsingComponents();
|
|
164
|
+
|
|
165
|
+
hour = 0;
|
|
166
|
+
minute = 0;
|
|
167
|
+
meridiem = -1;
|
|
168
|
+
|
|
169
|
+
// ----- Second
|
|
170
|
+
if (match[SECOND_GROUP]) {
|
|
171
|
+
let second = parseInt(toHankaku(match[SECOND_GROUP]));
|
|
172
|
+
if (isNaN(second)) {
|
|
173
|
+
second = jaStringToNumber(match[SECOND_GROUP]);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (second >= 60) return null;
|
|
177
|
+
result.end.assign("second", second);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
hour = parseInt(toHankaku(match[HOUR_GROUP]));
|
|
181
|
+
if (isNaN(hour)) {
|
|
182
|
+
hour = jaStringToNumber(match[HOUR_GROUP]);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// ----- Minutes
|
|
186
|
+
if (match[MINUTE_GROUP]) {
|
|
187
|
+
if (match[MINUTE_GROUP] === "半") {
|
|
188
|
+
minute = 30;
|
|
189
|
+
} else {
|
|
190
|
+
minute = parseInt(toHankaku(match[MINUTE_GROUP]));
|
|
191
|
+
if (isNaN(minute)) {
|
|
192
|
+
minute = jaStringToNumber(match[MINUTE_GROUP]);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
} else if (hour > 100) {
|
|
196
|
+
minute = hour % 100;
|
|
197
|
+
hour = Math.floor(hour / 100);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
if (minute >= 60) {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (hour > 24) {
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
if (hour >= 12) {
|
|
208
|
+
meridiem = Meridiem.PM;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// ----- AM & PM
|
|
212
|
+
if (match[AM_PM_HOUR_GROUP_1]) {
|
|
213
|
+
if (hour > 12) return null;
|
|
214
|
+
const AMPMString = match[AM_PM_HOUR_GROUP_1];
|
|
215
|
+
const FirstAMPMString = AMPMString[0].toLowerCase();
|
|
216
|
+
if (AMPMString === "午前" || FirstAMPMString === "a") {
|
|
217
|
+
meridiem = Meridiem.AM;
|
|
218
|
+
if (hour === 12) hour = 0;
|
|
219
|
+
} else if (AMPMString === "午後" || FirstAMPMString === "p") {
|
|
220
|
+
meridiem = Meridiem.PM;
|
|
221
|
+
if (hour != 12) hour += 12;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
if (!result.start.isCertain("meridiem")) {
|
|
225
|
+
if (meridiem === Meridiem.AM) {
|
|
226
|
+
result.start.imply("meridiem", Meridiem.AM);
|
|
227
|
+
|
|
228
|
+
if (result.start.get("hour") === 12) {
|
|
229
|
+
result.start.assign("hour", 0);
|
|
230
|
+
}
|
|
231
|
+
} else {
|
|
232
|
+
result.start.imply("meridiem", 1);
|
|
233
|
+
|
|
234
|
+
if (result.start.get("hour") != 12) {
|
|
235
|
+
result.start.assign("hour", result.start.get("hour") + 12);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
} else if (match[AM_PM_HOUR_GROUP_2]) {
|
|
240
|
+
if (hour > 12) return null;
|
|
241
|
+
const ampm = match[AM_PM_HOUR_GROUP_2][0].toLowerCase();
|
|
242
|
+
if (ampm === "a") {
|
|
243
|
+
meridiem = Meridiem.AM;
|
|
244
|
+
if (hour === 12) hour = 0;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (ampm === "p") {
|
|
248
|
+
meridiem = Meridiem.PM;
|
|
249
|
+
if (hour != 12) hour += 12;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
result.text = result.text + match[0];
|
|
254
|
+
result.end.assign("hour", hour);
|
|
255
|
+
result.end.assign("minute", minute);
|
|
256
|
+
if (meridiem >= 0) {
|
|
257
|
+
result.end.assign("meridiem", meridiem);
|
|
258
|
+
} else {
|
|
259
|
+
const startAtPM = result.start.isCertain("meridiem") && result.start.get("hour") > 12;
|
|
260
|
+
if (startAtPM) {
|
|
261
|
+
if (result.start.get("hour") - 12 > hour) {
|
|
262
|
+
// 10pm - 1 (am)
|
|
263
|
+
result.end.imply("meridiem", Meridiem.AM);
|
|
264
|
+
} else if (hour <= 12) {
|
|
265
|
+
result.end.assign("hour", hour + 12);
|
|
266
|
+
result.end.assign("meridiem", Meridiem.PM);
|
|
267
|
+
}
|
|
268
|
+
} else if (hour > 12) {
|
|
269
|
+
result.end.imply("meridiem", Meridiem.PM);
|
|
270
|
+
} else if (hour <= 12) {
|
|
271
|
+
result.end.imply("meridiem", Meridiem.AM);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
if (result.end.date().getTime() < result.start.date().getTime()) {
|
|
276
|
+
result.end.imply("day", result.end.get("day") + 1);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return result;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ParsingContext, Parser } from "../../../chrono";
|
|
2
|
+
import { ParsingComponents } from "../../../results";
|
|
3
|
+
import { WEEKDAY_OFFSET } from "../constants";
|
|
4
|
+
import { createParsingComponentsAtWeekday } from "../../../common/calculation/weekdays";
|
|
5
|
+
|
|
6
|
+
const PATTERN = new RegExp(
|
|
7
|
+
"((?<prefix>前の|次の|今週))?(?<weekday>" + Object.keys(WEEKDAY_OFFSET).join("|") + ")(?:曜日|曜)",
|
|
8
|
+
"i"
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
export default class JPWeekdayParser implements Parser {
|
|
12
|
+
pattern(): RegExp {
|
|
13
|
+
return PATTERN;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
extract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
|
|
17
|
+
const dayOfWeek = match.groups.weekday;
|
|
18
|
+
const offset = WEEKDAY_OFFSET[dayOfWeek];
|
|
19
|
+
if (offset === undefined) return null;
|
|
20
|
+
|
|
21
|
+
const prefix = match.groups.prefix || "";
|
|
22
|
+
|
|
23
|
+
let modifier = null;
|
|
24
|
+
if (prefix.match(/前の/)) {
|
|
25
|
+
modifier = "last";
|
|
26
|
+
} else if (prefix.match(/次の/)) {
|
|
27
|
+
modifier = "next";
|
|
28
|
+
} else if (prefix.match(/今週/)) {
|
|
29
|
+
modifier = "this";
|
|
30
|
+
}
|
|
31
|
+
// TODO: handle 先週, 来週. They are different from last and next.
|
|
32
|
+
|
|
33
|
+
return createParsingComponentsAtWeekday(context.reference, offset, modifier);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ParsingContext, Parser } from "../../../chrono";
|
|
2
|
+
import { ParsingComponents } from "../../../results";
|
|
3
|
+
import { WEEKDAY_OFFSET } from "../constants";
|
|
4
|
+
import { createParsingComponentsAtWeekday } from "../../../common/calculation/weekdays";
|
|
5
|
+
|
|
6
|
+
const PATTERN = new RegExp("(?:\\(|\\()(?<weekday>" + Object.keys(WEEKDAY_OFFSET).join("|") + ")(?:\\)|\\))", "i");
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Weekday with parentheses in Japanese
|
|
10
|
+
* For examples:
|
|
11
|
+
* - (水)
|
|
12
|
+
* - (土)
|
|
13
|
+
*/
|
|
14
|
+
export default class JPWeekdayWithParenthesesParser implements Parser {
|
|
15
|
+
pattern(): RegExp {
|
|
16
|
+
return PATTERN;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
extract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
|
|
20
|
+
const dayOfWeek = match.groups.weekday;
|
|
21
|
+
const offset = WEEKDAY_OFFSET[dayOfWeek];
|
|
22
|
+
if (offset === undefined) return null;
|
|
23
|
+
return createParsingComponentsAtWeekday(context.reference, offset);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -3,11 +3,11 @@ import AbstractMergeDateRangeRefiner from "../../../common/refiners/AbstractMerg
|
|
|
3
3
|
/**
|
|
4
4
|
* Merging before and after results (see. AbstractMergeDateRangeRefiner)
|
|
5
5
|
* This implementation should provide Japanese connecting phases
|
|
6
|
-
* -
|
|
6
|
+
* - 2月11日[ー]2月13日
|
|
7
7
|
* - 水曜日[から]日曜日
|
|
8
8
|
*/
|
|
9
9
|
export default class JPMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner {
|
|
10
10
|
patternBetween(): RegExp {
|
|
11
|
-
return /^\s*(
|
|
11
|
+
return /^\s*(から|-|ー|-|~|~)\s*$/i;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { MergingRefiner } from "../../../../src/common/abstractRefiners";
|
|
2
|
+
import { ParsingResult } from "../../../results";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Merge weekday component into more completed data
|
|
6
|
+
* - [2014/7/12], [(土)] => [2014/7/12 (土)]
|
|
7
|
+
* - [7月12日], [土曜日] => [7月12日 土曜日]
|
|
8
|
+
* The difference between the original MergeWeekdayComponentRefiner and the JP one is the order of date and weekday.
|
|
9
|
+
*/
|
|
10
|
+
export default class JPMergeWeekdayComponentRefiner extends MergingRefiner {
|
|
11
|
+
mergeResults(textBetween: string, currentResult: ParsingResult, nextResult: ParsingResult): ParsingResult {
|
|
12
|
+
const newResult = currentResult.clone();
|
|
13
|
+
newResult.text = currentResult.text + textBetween + nextResult.text;
|
|
14
|
+
|
|
15
|
+
newResult.start.assign("weekday", nextResult.start.get("weekday"));
|
|
16
|
+
if (newResult.end) {
|
|
17
|
+
newResult.end.assign("weekday", nextResult.start.get("weekday"));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return newResult;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
shouldMergeResults(textBetween: string, currentResult: ParsingResult, nextResult: ParsingResult): boolean {
|
|
24
|
+
const normalDateThenWeekday =
|
|
25
|
+
currentResult.start.isCertain("day") &&
|
|
26
|
+
nextResult.start.isOnlyWeekdayComponent() &&
|
|
27
|
+
!nextResult.start.isCertain("hour");
|
|
28
|
+
return normalDateThenWeekday && textBetween.match(/^[,、の]?\s*$/) !== null;
|
|
29
|
+
}
|
|
30
|
+
}
|
package/src/results.ts
CHANGED
|
@@ -14,6 +14,7 @@ export class ReferenceWithTimezone {
|
|
|
14
14
|
input = input ?? new Date();
|
|
15
15
|
if (input instanceof Date) {
|
|
16
16
|
this.instant = input;
|
|
17
|
+
this.timezoneOffset = null;
|
|
17
18
|
} else {
|
|
18
19
|
this.instant = input.instant ?? new Date();
|
|
19
20
|
this.timezoneOffset = toTimezoneOffset(input.timezone, this.instant);
|
|
@@ -25,7 +26,11 @@ export class ReferenceWithTimezone {
|
|
|
25
26
|
* The output's instant is NOT the reference's instant when the reference's and system's timezone are different.
|
|
26
27
|
*/
|
|
27
28
|
getDateWithAdjustedTimezone() {
|
|
28
|
-
|
|
29
|
+
const date = new Date(this.instant);
|
|
30
|
+
if (this.timezoneOffset !== null) {
|
|
31
|
+
date.setMinutes(date.getMinutes() - this.getSystemTimezoneAdjustmentMinute(this.instant));
|
|
32
|
+
}
|
|
33
|
+
return date;
|
|
29
34
|
}
|
|
30
35
|
|
|
31
36
|
/**
|
|
@@ -44,6 +49,10 @@ export class ReferenceWithTimezone {
|
|
|
44
49
|
const targetTimezoneOffset = overrideTimezoneOffset ?? this.timezoneOffset ?? currentTimezoneOffset;
|
|
45
50
|
return currentTimezoneOffset - targetTimezoneOffset;
|
|
46
51
|
}
|
|
52
|
+
|
|
53
|
+
getTimezoneOffset(): number {
|
|
54
|
+
return this.timezoneOffset ?? -this.instant.getTimezoneOffset();
|
|
55
|
+
}
|
|
47
56
|
}
|
|
48
57
|
|
|
49
58
|
export class ParsingComponents implements ParsedComponents {
|
|
@@ -62,10 +71,10 @@ export class ParsingComponents implements ParsedComponents {
|
|
|
62
71
|
}
|
|
63
72
|
}
|
|
64
73
|
|
|
65
|
-
const refDayJs =
|
|
66
|
-
this.imply("day", refDayJs.
|
|
67
|
-
this.imply("month", refDayJs.
|
|
68
|
-
this.imply("year", refDayJs.
|
|
74
|
+
const refDayJs = reference.getDateWithAdjustedTimezone();
|
|
75
|
+
this.imply("day", refDayJs.getDate());
|
|
76
|
+
this.imply("month", refDayJs.getMonth() + 1);
|
|
77
|
+
this.imply("year", refDayJs.getFullYear());
|
|
69
78
|
this.imply("hour", 12);
|
|
70
79
|
this.imply("minute", 0);
|
|
71
80
|
this.imply("second", 0);
|
|
@@ -166,7 +175,7 @@ export class ParsingComponents implements ParsedComponents {
|
|
|
166
175
|
}
|
|
167
176
|
|
|
168
177
|
dayjs() {
|
|
169
|
-
return dayjs(this.
|
|
178
|
+
return dayjs(this.dateWithoutTimezoneAdjustment());
|
|
170
179
|
}
|
|
171
180
|
|
|
172
181
|
date(): Date {
|
|
@@ -210,7 +219,7 @@ export class ParsingComponents implements ParsedComponents {
|
|
|
210
219
|
reference: ReferenceWithTimezone,
|
|
211
220
|
fragments: { [c in QUnitType]?: number }
|
|
212
221
|
): ParsingComponents {
|
|
213
|
-
let date = dayjs(reference.
|
|
222
|
+
let date = dayjs(reference.getDateWithAdjustedTimezone());
|
|
214
223
|
for (const key in fragments) {
|
|
215
224
|
date = date.add(fragments[key as QUnitType], key as QUnitType);
|
|
216
225
|
}
|
|
@@ -221,14 +230,10 @@ export class ParsingComponents implements ParsedComponents {
|
|
|
221
230
|
components.addTag("result/relativeDateAndTime");
|
|
222
231
|
assignSimilarTime(components, date);
|
|
223
232
|
assignSimilarDate(components, date);
|
|
224
|
-
|
|
225
|
-
components.assign("timezoneOffset", -reference.instant.getTimezoneOffset());
|
|
226
|
-
}
|
|
233
|
+
components.assign("timezoneOffset", reference.getTimezoneOffset());
|
|
227
234
|
} else {
|
|
228
235
|
implySimilarTime(components, date);
|
|
229
|
-
|
|
230
|
-
components.imply("timezoneOffset", -reference.instant.getTimezoneOffset());
|
|
231
|
-
}
|
|
236
|
+
components.imply("timezoneOffset", reference.getTimezoneOffset());
|
|
232
237
|
|
|
233
238
|
if (fragments["d"]) {
|
|
234
239
|
components.assign("day", date.date());
|