chrono-node 2.8.4 → 2.9.0
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/duration.d.ts +5 -0
- package/dist/cjs/calculation/duration.js +6 -0
- package/dist/cjs/calculation/duration.js.map +1 -1
- package/dist/cjs/calculation/mergingCalculation.js +5 -4
- package/dist/cjs/calculation/mergingCalculation.js.map +1 -1
- package/dist/cjs/calculation/weekdays.js +1 -2
- package/dist/cjs/calculation/weekdays.js.map +1 -1
- package/dist/cjs/calculation/years.js +11 -16
- package/dist/cjs/calculation/years.js.map +1 -1
- package/dist/cjs/common/casualReferences.d.ts +1 -1
- package/dist/cjs/common/casualReferences.js +29 -31
- package/dist/cjs/common/casualReferences.js.map +1 -1
- package/dist/cjs/common/parsers/AbstractTimeExpressionParser.js +3 -0
- package/dist/cjs/common/parsers/AbstractTimeExpressionParser.js.map +1 -1
- package/dist/cjs/common/refiners/AbstractMergeDateRangeRefiner.js +20 -19
- package/dist/cjs/common/refiners/AbstractMergeDateRangeRefiner.js.map +1 -1
- package/dist/cjs/common/refiners/ForwardDateRefiner.js +16 -24
- 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/constants.d.ts +4 -4
- package/dist/cjs/locales/de/constants.js +5 -5
- package/dist/cjs/locales/de/constants.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DECasualDateParser.js +18 -15
- package/dist/cjs/locales/de/parsers/DECasualDateParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DECasualTimeParser.js +4 -9
- package/dist/cjs/locales/de/parsers/DECasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DETimeUnitRelativeFormatParser.js +2 -2
- 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/en/constants.d.ts +5 -6
- package/dist/cjs/locales/en/constants.js +5 -5
- package/dist/cjs/locales/en/constants.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENCasualDateParser.js +7 -9
- package/dist/cjs/locales/en/parsers/ENCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENRelativeDateFormatParser.js +14 -18
- package/dist/cjs/locales/en/parsers/ENRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitAgoFormatParser.js +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +1 -1
- 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 -5
- package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js +3 -3
- package/dist/cjs/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js.map +1 -1
- package/dist/cjs/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js +1 -1
- package/dist/cjs/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js.map +1 -1
- package/dist/cjs/locales/es/constants.d.ts +4 -5
- package/dist/cjs/locales/es/constants.js +4 -4
- package/dist/cjs/locales/es/constants.js.map +1 -1
- package/dist/cjs/locales/es/parsers/ESCasualTimeParser.js +6 -7
- package/dist/cjs/locales/es/parsers/ESCasualTimeParser.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/fr/constants.d.ts +4 -5
- package/dist/cjs/locales/fr/constants.js +4 -4
- package/dist/cjs/locales/fr/constants.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRCasualDateParser.js +6 -9
- package/dist/cjs/locales/fr/parsers/FRCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitAgoFormatParser.js +3 -3
- package/dist/cjs/locales/fr/parsers/FRTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +2 -2
- 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/it/constants.d.ts +4 -4
- package/dist/cjs/locales/it/constants.js +4 -4
- package/dist/cjs/locales/it/constants.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualDateParser.d.ts +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualDateParser.js +9 -11
- package/dist/cjs/locales/it/parsers/ITCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualTimeParser.d.ts +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js +8 -9
- package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js +14 -18
- package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js +3 -3
- package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js +3 -3
- 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/refiners/ITMergeRelativeDateRefiner.js +3 -3
- package/dist/cjs/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +1 -1
- package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js +4 -8
- package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/ja/parsers/JPStandardParser.js +1 -6
- package/dist/cjs/locales/ja/parsers/JPStandardParser.js.map +1 -1
- package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.d.ts +1 -1
- package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.js +77 -187
- package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/nl/constants.d.ts +4 -4
- package/dist/cjs/locales/nl/constants.js +4 -4
- package/dist/cjs/locales/nl/constants.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualDateTimeParser.js +10 -9
- package/dist/cjs/locales/nl/parsers/NLCasualDateTimeParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js +6 -7
- package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLRelativeDateFormatParser.js +14 -18
- package/dist/cjs/locales/nl/parsers/NLRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +3 -3
- package/dist/cjs/locales/nl/parsers/NLTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js +3 -3
- 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/pt/parsers/PTCasualTimeParser.js +6 -7
- package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/ru/constants.d.ts +4 -4
- package/dist/cjs/locales/ru/constants.js +7 -7
- package/dist/cjs/locales/ru/constants.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js +6 -9
- package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js +14 -18
- package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js +3 -3
- package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +3 -3
- 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/sv/constants.d.ts +8 -4
- package/dist/cjs/locales/sv/constants.js +25 -7
- package/dist/cjs/locales/sv/constants.js.map +1 -1
- package/dist/cjs/locales/sv/index.js +2 -0
- package/dist/cjs/locales/sv/index.js.map +1 -1
- package/dist/cjs/locales/sv/parsers/SVCasualDateParser.js +14 -13
- package/dist/cjs/locales/sv/parsers/SVCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.d.ts +9 -0
- package/dist/cjs/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.js +34 -0
- package/dist/cjs/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.js.map +1 -0
- package/dist/cjs/locales/uk/constants.d.ts +4 -4
- package/dist/cjs/locales/uk/constants.js +8 -8
- package/dist/cjs/locales/uk/constants.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js +6 -9
- package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js +14 -18
- package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js +3 -3
- package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js +3 -3
- 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/zh/hans/parsers/ZHHansCasualDateParser.js +23 -27
- package/dist/cjs/locales/zh/hans/parsers/ZHHansCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDateParser.js +2 -7
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js +20 -21
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js +17 -22
- package/dist/cjs/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +71 -76
- package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansWeekdayParser.js +14 -19
- package/dist/cjs/locales/zh/hans/parsers/ZHHansWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantCasualDateParser.js +23 -27
- package/dist/cjs/locales/zh/hant/parsers/ZHHantCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDateParser.js +2 -7
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js +20 -21
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js +17 -22
- package/dist/cjs/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +73 -78
- package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantWeekdayParser.js +14 -19
- package/dist/cjs/locales/zh/hant/parsers/ZHHantWeekdayParser.js.map +1 -1
- package/dist/cjs/results.d.ts +3 -4
- package/dist/cjs/results.js +74 -60
- package/dist/cjs/results.js.map +1 -1
- package/dist/cjs/timezone.js +1 -6
- package/dist/cjs/timezone.js.map +1 -1
- package/dist/cjs/types.d.ts +1 -1
- package/dist/esm/calculation/duration.d.ts +5 -0
- package/dist/esm/calculation/duration.js +5 -0
- package/dist/esm/calculation/duration.js.map +1 -1
- package/dist/esm/calculation/mergingCalculation.js +5 -4
- package/dist/esm/calculation/mergingCalculation.js.map +1 -1
- package/dist/esm/calculation/weekdays.js +1 -2
- package/dist/esm/calculation/weekdays.js.map +1 -1
- package/dist/esm/calculation/years.js +11 -13
- package/dist/esm/calculation/years.js.map +1 -1
- package/dist/esm/common/casualReferences.d.ts +1 -1
- package/dist/esm/common/casualReferences.js +21 -20
- package/dist/esm/common/casualReferences.js.map +1 -1
- package/dist/esm/common/parsers/AbstractTimeExpressionParser.js +3 -0
- package/dist/esm/common/parsers/AbstractTimeExpressionParser.js.map +1 -1
- package/dist/esm/common/refiners/AbstractMergeDateRangeRefiner.js +20 -19
- package/dist/esm/common/refiners/AbstractMergeDateRangeRefiner.js.map +1 -1
- package/dist/esm/common/refiners/ForwardDateRefiner.js +16 -21
- 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/constants.d.ts +4 -4
- package/dist/esm/locales/de/constants.js +4 -4
- package/dist/esm/locales/de/constants.js.map +1 -1
- package/dist/esm/locales/de/parsers/DECasualDateParser.js +13 -10
- package/dist/esm/locales/de/parsers/DECasualDateParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DECasualTimeParser.js +3 -5
- package/dist/esm/locales/de/parsers/DECasualTimeParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js +2 -2
- package/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DETimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/de/parsers/DETimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/en/constants.d.ts +5 -6
- package/dist/esm/locales/en/constants.js +7 -7
- package/dist/esm/locales/en/constants.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENCasualDateParser.js +6 -5
- package/dist/esm/locales/en/parsers/ENCasualDateParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENRelativeDateFormatParser.js +14 -15
- package/dist/esm/locales/en/parsers/ENRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js +2 -2
- package/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +2 -2
- package/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js +2 -2
- package/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js +2 -6
- package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js +4 -4
- package/dist/esm/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js.map +1 -1
- package/dist/esm/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js +2 -2
- package/dist/esm/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js.map +1 -1
- package/dist/esm/locales/es/constants.d.ts +4 -5
- package/dist/esm/locales/es/constants.js +3 -3
- package/dist/esm/locales/es/constants.js.map +1 -1
- package/dist/esm/locales/es/parsers/ESCasualTimeParser.js +6 -4
- package/dist/esm/locales/es/parsers/ESCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/es/parsers/ESTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/es/parsers/ESTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/fr/constants.d.ts +4 -5
- package/dist/esm/locales/fr/constants.js +3 -3
- package/dist/esm/locales/fr/constants.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRCasualDateParser.js +5 -5
- package/dist/esm/locales/fr/parsers/FRCasualDateParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRTimeUnitAgoFormatParser.js +4 -4
- package/dist/esm/locales/fr/parsers/FRTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +2 -2
- package/dist/esm/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/fr/parsers/FRTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/it/constants.d.ts +4 -4
- package/dist/esm/locales/it/constants.js +3 -3
- package/dist/esm/locales/it/constants.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITCasualDateParser.d.ts +1 -1
- package/dist/esm/locales/it/parsers/ITCasualDateParser.js +7 -6
- package/dist/esm/locales/it/parsers/ITCasualDateParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITCasualTimeParser.d.ts +1 -1
- package/dist/esm/locales/it/parsers/ITCasualTimeParser.js +7 -5
- package/dist/esm/locales/it/parsers/ITCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITRelativeDateFormatParser.js +14 -15
- package/dist/esm/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js +4 -4
- package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js +4 -4
- package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js +2 -2
- package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/it/parsers/ITTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/it/refiners/ITMergeRelativeDateRefiner.js +4 -4
- package/dist/esm/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +1 -1
- package/dist/esm/locales/ja/parsers/JPCasualDateParser.js +4 -5
- package/dist/esm/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
- package/dist/esm/locales/ja/parsers/JPStandardParser.js +1 -3
- package/dist/esm/locales/ja/parsers/JPStandardParser.js.map +1 -1
- package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.d.ts +1 -1
- package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.js +75 -186
- package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/nl/constants.d.ts +4 -4
- package/dist/esm/locales/nl/constants.js +3 -3
- package/dist/esm/locales/nl/constants.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualDateTimeParser.js +9 -5
- package/dist/esm/locales/nl/parsers/NLCasualDateTimeParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualTimeParser.js +6 -4
- package/dist/esm/locales/nl/parsers/NLCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLRelativeDateFormatParser.js +14 -15
- package/dist/esm/locales/nl/parsers/NLRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +4 -4
- package/dist/esm/locales/nl/parsers/NLTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js +4 -4
- package/dist/esm/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +2 -2
- package/dist/esm/locales/nl/parsers/NLTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/nl/parsers/NLTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/pt/parsers/PTCasualTimeParser.js +6 -4
- package/dist/esm/locales/pt/parsers/PTCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/ru/constants.d.ts +4 -4
- package/dist/esm/locales/ru/constants.js +6 -6
- package/dist/esm/locales/ru/constants.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUCasualTimeParser.js +6 -6
- package/dist/esm/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.js +14 -15
- package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeUnitAgoFormatParser.js +4 -4
- package/dist/esm/locales/ru/parsers/RUTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +4 -4
- package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/ru/parsers/RUTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/sv/constants.d.ts +8 -4
- package/dist/esm/locales/sv/constants.js +23 -5
- package/dist/esm/locales/sv/constants.js.map +1 -1
- package/dist/esm/locales/sv/index.js +2 -0
- package/dist/esm/locales/sv/index.js.map +1 -1
- package/dist/esm/locales/sv/parsers/SVCasualDateParser.js +14 -10
- package/dist/esm/locales/sv/parsers/SVCasualDateParser.js.map +1 -1
- package/dist/esm/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.d.ts +9 -0
- package/dist/esm/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.js +32 -0
- package/dist/esm/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.js.map +1 -0
- package/dist/esm/locales/uk/constants.d.ts +4 -4
- package/dist/esm/locales/uk/constants.js +7 -7
- package/dist/esm/locales/uk/constants.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKCasualTimeParser.js +6 -6
- package/dist/esm/locales/uk/parsers/UKCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.js +14 -15
- package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKTimeUnitAgoFormatParser.js +4 -4
- package/dist/esm/locales/uk/parsers/UKTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js +4 -4
- package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansCasualDateParser.js +23 -24
- package/dist/esm/locales/zh/hans/parsers/ZHHansCasualDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansDateParser.js +2 -4
- package/dist/esm/locales/zh/hans/parsers/ZHHansDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js +20 -18
- package/dist/esm/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js +17 -19
- package/dist/esm/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +71 -73
- package/dist/esm/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansWeekdayParser.js +14 -16
- package/dist/esm/locales/zh/hans/parsers/ZHHansWeekdayParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantCasualDateParser.js +23 -24
- package/dist/esm/locales/zh/hant/parsers/ZHHantCasualDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantDateParser.js +2 -4
- package/dist/esm/locales/zh/hant/parsers/ZHHantDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js +20 -18
- package/dist/esm/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js +17 -19
- package/dist/esm/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +73 -75
- package/dist/esm/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantWeekdayParser.js +14 -16
- package/dist/esm/locales/zh/hant/parsers/ZHHantWeekdayParser.js.map +1 -1
- package/dist/esm/results.d.ts +3 -4
- package/dist/esm/results.js +75 -58
- package/dist/esm/results.js.map +1 -1
- package/dist/esm/timezone.js +1 -3
- package/dist/esm/timezone.js.map +1 -1
- package/dist/esm/types.d.ts +1 -1
- package/package.json +2 -4
- package/src/calculation/duration.ts +10 -0
- package/src/calculation/mergingCalculation.ts +5 -4
- package/src/calculation/weekdays.ts +2 -2
- package/src/calculation/years.ts +11 -16
- package/src/common/casualReferences.ts +23 -33
- package/src/common/parsers/AbstractTimeExpressionParser.ts +6 -0
- package/src/common/refiners/AbstractMergeDateRangeRefiner.ts +20 -21
- package/src/common/refiners/ForwardDateRefiner.ts +17 -22
- package/src/index.ts +3 -1
- package/src/locales/de/constants.ts +8 -8
- package/src/locales/de/parsers/DECasualDateParser.ts +13 -10
- package/src/locales/de/parsers/DECasualTimeParser.ts +3 -5
- package/src/locales/de/parsers/DETimeUnitRelativeFormatParser.ts +2 -2
- package/src/locales/de/parsers/DETimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/en/constants.ts +12 -13
- package/src/locales/en/parsers/ENCasualDateParser.ts +6 -5
- package/src/locales/en/parsers/ENRelativeDateFormatParser.ts +14 -16
- package/src/locales/en/parsers/ENTimeUnitAgoFormatParser.ts +2 -2
- package/src/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.ts +2 -2
- package/src/locales/en/parsers/ENTimeUnitLaterFormatParser.ts +2 -2
- package/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts +2 -7
- package/src/locales/en/refiners/ENMergeRelativeAfterDateRefiner.ts +4 -4
- package/src/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.ts +2 -2
- package/src/locales/es/constants.ts +7 -6
- package/src/locales/es/parsers/ESCasualTimeParser.ts +6 -4
- package/src/locales/es/parsers/ESTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/fr/constants.ts +7 -6
- package/src/locales/fr/parsers/FRCasualDateParser.ts +5 -5
- package/src/locales/fr/parsers/FRTimeUnitAgoFormatParser.ts +4 -4
- package/src/locales/fr/parsers/FRTimeUnitRelativeFormatParser.ts +2 -2
- package/src/locales/fr/parsers/FRTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/it/constants.ts +7 -7
- package/src/locales/it/parsers/ITCasualDateParser.ts +7 -6
- package/src/locales/it/parsers/ITCasualTimeParser.ts +7 -5
- package/src/locales/it/parsers/ITRelativeDateFormatParser.ts +14 -16
- package/src/locales/it/parsers/ITTimeUnitAgoFormatParser.ts +4 -4
- package/src/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.ts +4 -4
- package/src/locales/it/parsers/ITTimeUnitLaterFormatParser.ts +2 -2
- package/src/locales/it/parsers/ITTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/it/refiners/ITMergeRelativeDateRefiner.ts +4 -4
- package/src/locales/ja/parsers/JPCasualDateParser.ts +4 -5
- package/src/locales/ja/parsers/JPStandardParser.ts +1 -4
- package/src/locales/ja/parsers/JPTimeExpressionParser.ts +91 -190
- package/src/locales/nl/constants.ts +7 -7
- package/src/locales/nl/parsers/NLCasualDateTimeParser.ts +9 -5
- package/src/locales/nl/parsers/NLCasualTimeParser.ts +6 -4
- package/src/locales/nl/parsers/NLRelativeDateFormatParser.ts +14 -16
- package/src/locales/nl/parsers/NLTimeUnitAgoFormatParser.ts +4 -4
- package/src/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.ts +4 -4
- package/src/locales/nl/parsers/NLTimeUnitLaterFormatParser.ts +2 -2
- package/src/locales/nl/parsers/NLTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/pt/parsers/PTCasualTimeParser.ts +6 -4
- package/src/locales/ru/constants.ts +10 -10
- package/src/locales/ru/parsers/RUCasualTimeParser.ts +6 -6
- package/src/locales/ru/parsers/RURelativeDateFormatParser.ts +15 -18
- package/src/locales/ru/parsers/RUTimeUnitAgoFormatParser.ts +4 -4
- package/src/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.ts +4 -4
- package/src/locales/ru/parsers/RUTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/sv/constants.ts +31 -9
- package/src/locales/sv/index.ts +2 -0
- package/src/locales/sv/parsers/SVCasualDateParser.ts +14 -10
- package/src/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.ts +42 -0
- package/src/locales/uk/constants.ts +11 -11
- package/src/locales/uk/parsers/UKCasualTimeParser.ts +6 -6
- package/src/locales/uk/parsers/UKRelativeDateFormatParser.ts +14 -16
- package/src/locales/uk/parsers/UKTimeUnitAgoFormatParser.ts +4 -4
- package/src/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.ts +4 -4
- package/src/locales/uk/parsers/UKTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/zh/hans/parsers/ZHHansCasualDateParser.ts +23 -24
- package/src/locales/zh/hans/parsers/ZHHansDateParser.ts +2 -4
- package/src/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.ts +20 -18
- package/src/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.ts +18 -18
- package/src/locales/zh/hans/parsers/ZHHansTimeExpressionParser.ts +71 -73
- package/src/locales/zh/hans/parsers/ZHHansWeekdayParser.ts +16 -15
- package/src/locales/zh/hant/parsers/ZHHantCasualDateParser.ts +23 -24
- package/src/locales/zh/hant/parsers/ZHHantDateParser.ts +2 -4
- package/src/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.ts +20 -18
- package/src/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.ts +18 -18
- package/src/locales/zh/hant/parsers/ZHHantTimeExpressionParser.ts +73 -75
- package/src/locales/zh/hant/parsers/ZHHantWeekdayParser.ts +16 -15
- package/src/results.ts +82 -58
- package/src/timezone.ts +1 -5
- package/src/types.ts +1 -1
- package/test/calculation_weekdays.test.ts +17 -0
- package/test/en/en_time_exp.test.ts +2 -0
- package/test/it/it_casual.test.ts +44 -0
- package/test/it/it_month_name_little_endian.test.ts +28 -0
- package/test/it/it_weekday.test.ts +37 -0
- package/test/ja/ja_time_exp.test.ts +82 -21
- package/test/result.test.ts +74 -0
- package/test/sv/sv_casual.test.ts +42 -0
- package/test/sv/sv_month_name_little_endian.test.ts +48 -0
- package/test/sv/sv_time_units_casual_relative.test.ts +143 -0
- package/test/zh/hans/zh_hans_casual.test.ts +14 -0
- package/test/zh/hans/zh_hans_date.test.ts +14 -0
- package/test/zh/hans/zh_hans_deadline.test.ts +39 -0
- package/test/zh/hans/zh_hans_time_exp.test.ts +51 -0
- package/test/zh/hans/zh_hans_weekday.test.ts +87 -0
- package/test/zh/hant/zh_hant_casual.test.ts +14 -0
- package/test/zh/hant/zh_hant_date.test.ts +14 -0
- package/test/zh/hant/zh_hant_weekday.test.ts +43 -0
- package/dist/cjs/utils/dayjs.d.ts +0 -8
- package/dist/cjs/utils/dayjs.js +0 -48
- package/dist/cjs/utils/dayjs.js.map +0 -1
- package/dist/cjs/utils/timeunits.d.ts +0 -7
- package/dist/cjs/utils/timeunits.js +0 -30
- package/dist/cjs/utils/timeunits.js.map +0 -1
- package/dist/esm/utils/dayjs.d.ts +0 -8
- package/dist/esm/utils/dayjs.js +0 -40
- package/dist/esm/utils/dayjs.js.map +0 -1
- package/dist/esm/utils/timeunits.d.ts +0 -7
- package/dist/esm/utils/timeunits.js +0 -26
- package/dist/esm/utils/timeunits.js.map +0 -1
- package/src/utils/dayjs.ts +0 -52
- package/src/utils/timeunits.ts +0 -47
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import dayjs from "dayjs";
|
|
2
1
|
import { ParsingContext } from "../../../../chrono";
|
|
3
2
|
import { AbstractParserWithWordBoundaryChecking } from "../../../../common/parsers/AbstractParserWithWordBoundary";
|
|
4
3
|
import { ParsingComponents, ParsingResult } from "../../../../results";
|
|
@@ -27,33 +26,33 @@ export default class ZHHansCasualDateParser extends AbstractParserWithWordBounda
|
|
|
27
26
|
const index = match.index;
|
|
28
27
|
const result = context.createParsingResult(index, match[0]);
|
|
29
28
|
|
|
30
|
-
const
|
|
31
|
-
let
|
|
29
|
+
const refDate = context.refDate;
|
|
30
|
+
let date = new Date(refDate.getTime());
|
|
32
31
|
|
|
33
32
|
if (match[NOW_GROUP]) {
|
|
34
|
-
result.start.imply("hour",
|
|
35
|
-
result.start.imply("minute",
|
|
36
|
-
result.start.imply("second",
|
|
37
|
-
result.start.imply("millisecond",
|
|
33
|
+
result.start.imply("hour", refDate.getHours());
|
|
34
|
+
result.start.imply("minute", refDate.getMinutes());
|
|
35
|
+
result.start.imply("second", refDate.getSeconds());
|
|
36
|
+
result.start.imply("millisecond", refDate.getMilliseconds());
|
|
38
37
|
} else if (match[DAY_GROUP_1]) {
|
|
39
38
|
const day1 = match[DAY_GROUP_1];
|
|
40
39
|
const time1 = match[TIME_GROUP_1];
|
|
41
40
|
|
|
42
41
|
if (day1 == "明") {
|
|
43
42
|
// Check not "Tomorrow" on late night
|
|
44
|
-
if (
|
|
45
|
-
|
|
43
|
+
if (refDate.getHours() > 1) {
|
|
44
|
+
date.setDate(date.getDate() + 1);
|
|
46
45
|
}
|
|
47
46
|
} else if (day1 == "昨") {
|
|
48
|
-
|
|
47
|
+
date.setDate(date.getDate() - 1);
|
|
49
48
|
} else if (day1 == "前") {
|
|
50
|
-
|
|
49
|
+
date.setDate(date.getDate() - 2);
|
|
51
50
|
} else if (day1 == "大前") {
|
|
52
|
-
|
|
51
|
+
date.setDate(date.getDate() - 3);
|
|
53
52
|
} else if (day1 == "后") {
|
|
54
|
-
|
|
53
|
+
date.setDate(date.getDate() + 2);
|
|
55
54
|
} else if (day1 == "大后") {
|
|
56
|
-
|
|
55
|
+
date.setDate(date.getDate() + 3);
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
if (time1 == "早") {
|
|
@@ -84,19 +83,19 @@ export default class ZHHansCasualDateParser extends AbstractParserWithWordBounda
|
|
|
84
83
|
|
|
85
84
|
if (day3 == "明") {
|
|
86
85
|
// Check not "Tomorrow" on late night
|
|
87
|
-
if (
|
|
88
|
-
|
|
86
|
+
if (refDate.getHours() > 1) {
|
|
87
|
+
date.setDate(date.getDate() + 1);
|
|
89
88
|
}
|
|
90
89
|
} else if (day3 == "昨") {
|
|
91
|
-
|
|
90
|
+
date.setDate(date.getDate() - 1);
|
|
92
91
|
} else if (day3 == "前") {
|
|
93
|
-
|
|
92
|
+
date.setDate(date.getDate() - 2);
|
|
94
93
|
} else if (day3 == "大前") {
|
|
95
|
-
|
|
94
|
+
date.setDate(date.getDate() - 3);
|
|
96
95
|
} else if (day3 == "后") {
|
|
97
|
-
|
|
96
|
+
date.setDate(date.getDate() + 2);
|
|
98
97
|
} else if (day3 == "大后") {
|
|
99
|
-
|
|
98
|
+
date.setDate(date.getDate() + 3);
|
|
100
99
|
}
|
|
101
100
|
|
|
102
101
|
const timeString3 = match[TIME_GROUP_3];
|
|
@@ -119,9 +118,9 @@ export default class ZHHansCasualDateParser extends AbstractParserWithWordBounda
|
|
|
119
118
|
}
|
|
120
119
|
}
|
|
121
120
|
|
|
122
|
-
result.start.assign("day",
|
|
123
|
-
result.start.assign("month",
|
|
124
|
-
result.start.assign("year",
|
|
121
|
+
result.start.assign("day", date.getDate());
|
|
122
|
+
result.start.assign("month", date.getMonth() + 1);
|
|
123
|
+
result.start.assign("year", date.getFullYear());
|
|
125
124
|
|
|
126
125
|
return result;
|
|
127
126
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import dayjs from "dayjs";
|
|
2
1
|
import { ParsingContext } from "../../../../chrono";
|
|
3
2
|
import { AbstractParserWithWordBoundaryChecking } from "../../../../common/parsers/AbstractParserWithWordBoundary";
|
|
4
3
|
import { NUMBER, zhStringToNumber, zhStringToYear } from "../constants";
|
|
@@ -44,7 +43,6 @@ export default class ZHHansDateParser extends AbstractParserWithWordBoundaryChec
|
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
innerExtract(context: ParsingContext, match: RegExpMatchArray) {
|
|
47
|
-
const startMoment = dayjs(context.refDate);
|
|
48
46
|
const result = context.createParsingResult(match.index, match[0]);
|
|
49
47
|
|
|
50
48
|
//Month
|
|
@@ -58,7 +56,7 @@ export default class ZHHansDateParser extends AbstractParserWithWordBoundaryChec
|
|
|
58
56
|
if (isNaN(day)) day = zhStringToNumber(match[DAY_GROUP]);
|
|
59
57
|
result.start.assign("day", day);
|
|
60
58
|
} else {
|
|
61
|
-
result.start.imply("day",
|
|
59
|
+
result.start.imply("day", context.refDate.getDate());
|
|
62
60
|
}
|
|
63
61
|
|
|
64
62
|
//Year
|
|
@@ -67,7 +65,7 @@ export default class ZHHansDateParser extends AbstractParserWithWordBoundaryChec
|
|
|
67
65
|
if (isNaN(year)) year = zhStringToYear(match[YEAR_GROUP]);
|
|
68
66
|
result.start.assign("year", year);
|
|
69
67
|
} else {
|
|
70
|
-
result.start.imply("year",
|
|
68
|
+
result.start.imply("year", context.refDate.getFullYear());
|
|
71
69
|
}
|
|
72
70
|
|
|
73
71
|
return result;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import dayjs from "dayjs";
|
|
2
1
|
import { ParsingContext } from "../../../../chrono";
|
|
3
2
|
import { AbstractParserWithWordBoundaryChecking } from "../../../../common/parsers/AbstractParserWithWordBoundary";
|
|
3
|
+
import { addDuration, Duration } from "../../../../calculation/duration";
|
|
4
4
|
import { NUMBER, zhStringToNumber } from "../constants";
|
|
5
5
|
|
|
6
6
|
const PATTERN = new RegExp(
|
|
@@ -41,41 +41,43 @@ export default class ZHHansDeadlineFormatParser extends AbstractParserWithWordBo
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
const duration: Duration = {};
|
|
45
45
|
const unit = match[UNIT_GROUP];
|
|
46
46
|
const unitAbbr = unit[0];
|
|
47
47
|
|
|
48
48
|
if (unitAbbr.match(/[日天星礼月年]/)) {
|
|
49
49
|
if (unitAbbr == "日" || unitAbbr == "天") {
|
|
50
|
-
|
|
50
|
+
duration.day = number;
|
|
51
51
|
} else if (unitAbbr == "星" || unitAbbr == "礼") {
|
|
52
|
-
|
|
52
|
+
duration.week = number;
|
|
53
53
|
} else if (unitAbbr == "月") {
|
|
54
|
-
|
|
54
|
+
duration.month = number;
|
|
55
55
|
} else if (unitAbbr == "年") {
|
|
56
|
-
|
|
56
|
+
duration.year = number;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
result.start.assign("
|
|
61
|
-
result.start.assign("
|
|
59
|
+
const date = addDuration(context.refDate, duration);
|
|
60
|
+
result.start.assign("year", date.getFullYear());
|
|
61
|
+
result.start.assign("month", date.getMonth() + 1);
|
|
62
|
+
result.start.assign("day", date.getDate());
|
|
62
63
|
return result;
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
if (unitAbbr == "秒") {
|
|
66
|
-
|
|
67
|
+
duration.second = number;
|
|
67
68
|
} else if (unitAbbr == "分") {
|
|
68
|
-
|
|
69
|
+
duration.minute = number;
|
|
69
70
|
} else if (unitAbbr == "小" || unitAbbr == "钟") {
|
|
70
|
-
|
|
71
|
+
duration.hour = number;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
|
-
|
|
74
|
-
result.start.imply("
|
|
75
|
-
result.start.imply("
|
|
76
|
-
result.start.
|
|
77
|
-
result.start.assign("
|
|
78
|
-
result.start.assign("
|
|
74
|
+
const date = addDuration(context.refDate, duration);
|
|
75
|
+
result.start.imply("year", date.getFullYear());
|
|
76
|
+
result.start.imply("month", date.getMonth() + 1);
|
|
77
|
+
result.start.imply("day", date.getDate());
|
|
78
|
+
result.start.assign("hour", date.getHours());
|
|
79
|
+
result.start.assign("minute", date.getMinutes());
|
|
80
|
+
result.start.assign("second", date.getSeconds());
|
|
79
81
|
return result;
|
|
80
82
|
}
|
|
81
83
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import dayjs from "dayjs";
|
|
2
1
|
import { ParsingContext } from "../../../../chrono";
|
|
3
2
|
import { AbstractParserWithWordBoundaryChecking } from "../../../../common/parsers/AbstractParserWithWordBoundary";
|
|
4
3
|
import { ParsingResult } from "../../../../results";
|
|
@@ -31,37 +30,38 @@ export default class ZHHansRelationWeekdayParser extends AbstractParserWithWordB
|
|
|
31
30
|
modifier = "this";
|
|
32
31
|
}
|
|
33
32
|
|
|
34
|
-
|
|
33
|
+
const date = new Date(context.refDate.getTime());
|
|
35
34
|
let startMomentFixed = false;
|
|
36
|
-
const refOffset =
|
|
35
|
+
const refOffset = date.getDay();
|
|
37
36
|
|
|
38
37
|
if (modifier == "last" || modifier == "past") {
|
|
39
|
-
|
|
38
|
+
date.setDate(date.getDate() + (offset - 7 - refOffset));
|
|
40
39
|
startMomentFixed = true;
|
|
41
40
|
} else if (modifier == "next") {
|
|
42
|
-
|
|
41
|
+
date.setDate(date.getDate() + (offset + 7 - refOffset));
|
|
43
42
|
startMomentFixed = true;
|
|
44
43
|
} else if (modifier == "this") {
|
|
45
|
-
|
|
44
|
+
date.setDate(date.getDate() + (offset - refOffset));
|
|
46
45
|
} else {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
startMoment = startMoment.day(offset + 7);
|
|
51
|
-
} else {
|
|
52
|
-
startMoment = startMoment.day(offset);
|
|
46
|
+
let diff = offset - refOffset;
|
|
47
|
+
if (Math.abs(diff - 7) < Math.abs(diff)) {
|
|
48
|
+
diff -= 7;
|
|
53
49
|
}
|
|
50
|
+
if (Math.abs(diff + 7) < Math.abs(diff)) {
|
|
51
|
+
diff += 7;
|
|
52
|
+
}
|
|
53
|
+
date.setDate(date.getDate() + diff);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
result.start.assign("weekday", offset);
|
|
57
57
|
if (startMomentFixed) {
|
|
58
|
-
result.start.assign("day",
|
|
59
|
-
result.start.assign("month",
|
|
60
|
-
result.start.assign("year",
|
|
58
|
+
result.start.assign("day", date.getDate());
|
|
59
|
+
result.start.assign("month", date.getMonth() + 1);
|
|
60
|
+
result.start.assign("year", date.getFullYear());
|
|
61
61
|
} else {
|
|
62
|
-
result.start.imply("day",
|
|
63
|
-
result.start.imply("month",
|
|
64
|
-
result.start.imply("year",
|
|
62
|
+
result.start.imply("day", date.getDate());
|
|
63
|
+
result.start.imply("month", date.getMonth() + 1);
|
|
64
|
+
result.start.imply("year", date.getFullYear());
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
return result;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import dayjs from "dayjs";
|
|
2
1
|
import { ParsingContext } from "../../../../chrono";
|
|
3
2
|
import { AbstractParserWithWordBoundaryChecking } from "../../../../common/parsers/AbstractParserWithWordBoundary";
|
|
4
3
|
import { NUMBER, zhStringToNumber } from "../constants";
|
|
@@ -74,54 +73,53 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
74
73
|
return null;
|
|
75
74
|
}
|
|
76
75
|
|
|
77
|
-
const refMoment = dayjs(context.refDate);
|
|
78
76
|
const result = context.createParsingResult(match.index, match[0]);
|
|
79
|
-
|
|
77
|
+
const startMoment = new Date(context.refDate.getTime());
|
|
80
78
|
|
|
81
79
|
// ----- Day
|
|
82
80
|
if (match[DAY_GROUP_1]) {
|
|
83
81
|
const day1 = match[DAY_GROUP_1];
|
|
84
82
|
if (day1 == "明") {
|
|
85
83
|
// Check not "Tomorrow" on late night
|
|
86
|
-
if (
|
|
87
|
-
startMoment
|
|
84
|
+
if (context.refDate.getHours() > 1) {
|
|
85
|
+
startMoment.setDate(startMoment.getDate() + 1);
|
|
88
86
|
}
|
|
89
87
|
} else if (day1 == "昨") {
|
|
90
|
-
startMoment
|
|
88
|
+
startMoment.setDate(startMoment.getDate() - 1);
|
|
91
89
|
} else if (day1 == "前") {
|
|
92
|
-
startMoment
|
|
90
|
+
startMoment.setDate(startMoment.getDate() - 2);
|
|
93
91
|
} else if (day1 == "大前") {
|
|
94
|
-
startMoment
|
|
92
|
+
startMoment.setDate(startMoment.getDate() - 3);
|
|
95
93
|
} else if (day1 == "后") {
|
|
96
|
-
startMoment
|
|
94
|
+
startMoment.setDate(startMoment.getDate() + 2);
|
|
97
95
|
} else if (day1 == "大后") {
|
|
98
|
-
startMoment
|
|
96
|
+
startMoment.setDate(startMoment.getDate() + 3);
|
|
99
97
|
}
|
|
100
|
-
result.start.assign("day", startMoment.
|
|
101
|
-
result.start.assign("month", startMoment.
|
|
102
|
-
result.start.assign("year", startMoment.
|
|
98
|
+
result.start.assign("day", startMoment.getDate());
|
|
99
|
+
result.start.assign("month", startMoment.getMonth() + 1);
|
|
100
|
+
result.start.assign("year", startMoment.getFullYear());
|
|
103
101
|
} else if (match[DAY_GROUP_3]) {
|
|
104
102
|
const day3 = match[DAY_GROUP_3];
|
|
105
103
|
if (day3 == "明") {
|
|
106
|
-
startMoment
|
|
104
|
+
startMoment.setDate(startMoment.getDate() + 1);
|
|
107
105
|
} else if (day3 == "昨") {
|
|
108
|
-
startMoment
|
|
106
|
+
startMoment.setDate(startMoment.getDate() - 1);
|
|
109
107
|
} else if (day3 == "前") {
|
|
110
|
-
startMoment
|
|
108
|
+
startMoment.setDate(startMoment.getDate() - 2);
|
|
111
109
|
} else if (day3 == "大前") {
|
|
112
|
-
startMoment
|
|
110
|
+
startMoment.setDate(startMoment.getDate() - 3);
|
|
113
111
|
} else if (day3 == "后") {
|
|
114
|
-
startMoment
|
|
112
|
+
startMoment.setDate(startMoment.getDate() + 2);
|
|
115
113
|
} else if (day3 == "大后") {
|
|
116
|
-
startMoment
|
|
114
|
+
startMoment.setDate(startMoment.getDate() + 3);
|
|
117
115
|
}
|
|
118
|
-
result.start.assign("day", startMoment.
|
|
119
|
-
result.start.assign("month", startMoment.
|
|
120
|
-
result.start.assign("year", startMoment.
|
|
116
|
+
result.start.assign("day", startMoment.getDate());
|
|
117
|
+
result.start.assign("month", startMoment.getMonth() + 1);
|
|
118
|
+
result.start.assign("year", startMoment.getFullYear());
|
|
121
119
|
} else {
|
|
122
|
-
result.start.imply("day", startMoment.
|
|
123
|
-
result.start.imply("month", startMoment.
|
|
124
|
-
result.start.imply("year", startMoment.
|
|
120
|
+
result.start.imply("day", startMoment.getDate());
|
|
121
|
+
result.start.imply("month", startMoment.getMonth() + 1);
|
|
122
|
+
result.start.imply("year", startMoment.getFullYear());
|
|
125
123
|
}
|
|
126
124
|
|
|
127
125
|
let hour = 0;
|
|
@@ -233,8 +231,8 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
233
231
|
// Extracting the 'to' chunk
|
|
234
232
|
// ==============================================================
|
|
235
233
|
|
|
236
|
-
|
|
237
|
-
if (!
|
|
234
|
+
const secondMatch = SECOND_REG_PATTERN.exec(context.text.substring(result.index + result.text.length));
|
|
235
|
+
if (!secondMatch) {
|
|
238
236
|
// Not accept number only result
|
|
239
237
|
if (result.text.match(/^\d+$/)) {
|
|
240
238
|
return null;
|
|
@@ -242,53 +240,53 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
242
240
|
return result;
|
|
243
241
|
}
|
|
244
242
|
|
|
245
|
-
|
|
243
|
+
const endMoment = new Date(startMoment.getTime());
|
|
246
244
|
result.end = context.createParsingComponents();
|
|
247
245
|
|
|
248
246
|
// ----- Day
|
|
249
|
-
if (
|
|
250
|
-
const day1 =
|
|
247
|
+
if (secondMatch[DAY_GROUP_1]) {
|
|
248
|
+
const day1 = secondMatch[DAY_GROUP_1];
|
|
251
249
|
if (day1 == "明") {
|
|
252
250
|
// Check not "Tomorrow" on late night
|
|
253
|
-
if (
|
|
254
|
-
endMoment
|
|
251
|
+
if (context.refDate.getHours() > 1) {
|
|
252
|
+
endMoment.setDate(endMoment.getDate() + 1);
|
|
255
253
|
}
|
|
256
254
|
} else if (day1 == "昨") {
|
|
257
|
-
endMoment
|
|
255
|
+
endMoment.setDate(endMoment.getDate() - 1);
|
|
258
256
|
} else if (day1 == "前") {
|
|
259
|
-
endMoment
|
|
257
|
+
endMoment.setDate(endMoment.getDate() - 2);
|
|
260
258
|
} else if (day1 == "大前") {
|
|
261
|
-
endMoment
|
|
259
|
+
endMoment.setDate(endMoment.getDate() - 3);
|
|
262
260
|
} else if (day1 == "后") {
|
|
263
|
-
endMoment
|
|
261
|
+
endMoment.setDate(endMoment.getDate() + 2);
|
|
264
262
|
} else if (day1 == "大后") {
|
|
265
|
-
endMoment
|
|
263
|
+
endMoment.setDate(endMoment.getDate() + 3);
|
|
266
264
|
}
|
|
267
|
-
result.end.assign("day", endMoment.
|
|
268
|
-
result.end.assign("month", endMoment.
|
|
269
|
-
result.end.assign("year", endMoment.
|
|
270
|
-
} else if (
|
|
271
|
-
const day3 =
|
|
265
|
+
result.end.assign("day", endMoment.getDate());
|
|
266
|
+
result.end.assign("month", endMoment.getMonth() + 1);
|
|
267
|
+
result.end.assign("year", endMoment.getFullYear());
|
|
268
|
+
} else if (secondMatch[DAY_GROUP_3]) {
|
|
269
|
+
const day3 = secondMatch[DAY_GROUP_3];
|
|
272
270
|
if (day3 == "明") {
|
|
273
|
-
endMoment
|
|
271
|
+
endMoment.setDate(endMoment.getDate() + 1);
|
|
274
272
|
} else if (day3 == "昨") {
|
|
275
|
-
endMoment
|
|
273
|
+
endMoment.setDate(endMoment.getDate() - 1);
|
|
276
274
|
} else if (day3 == "前") {
|
|
277
|
-
endMoment
|
|
275
|
+
endMoment.setDate(endMoment.getDate() - 2);
|
|
278
276
|
} else if (day3 == "大前") {
|
|
279
|
-
endMoment
|
|
277
|
+
endMoment.setDate(endMoment.getDate() - 3);
|
|
280
278
|
} else if (day3 == "后") {
|
|
281
|
-
endMoment
|
|
279
|
+
endMoment.setDate(endMoment.getDate() + 2);
|
|
282
280
|
} else if (day3 == "大后") {
|
|
283
|
-
endMoment
|
|
281
|
+
endMoment.setDate(endMoment.getDate() + 3);
|
|
284
282
|
}
|
|
285
|
-
result.end.assign("day", endMoment.
|
|
286
|
-
result.end.assign("month", endMoment.
|
|
287
|
-
result.end.assign("year", endMoment.
|
|
283
|
+
result.end.assign("day", endMoment.getDate());
|
|
284
|
+
result.end.assign("month", endMoment.getMonth() + 1);
|
|
285
|
+
result.end.assign("year", endMoment.getFullYear());
|
|
288
286
|
} else {
|
|
289
|
-
result.end.imply("day", endMoment.
|
|
290
|
-
result.end.imply("month", endMoment.
|
|
291
|
-
result.end.imply("year", endMoment.
|
|
287
|
+
result.end.imply("day", endMoment.getDate());
|
|
288
|
+
result.end.imply("month", endMoment.getMonth() + 1);
|
|
289
|
+
result.end.imply("year", endMoment.getFullYear());
|
|
292
290
|
}
|
|
293
291
|
|
|
294
292
|
hour = 0;
|
|
@@ -296,31 +294,31 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
296
294
|
meridiem = -1;
|
|
297
295
|
|
|
298
296
|
// ----- Second
|
|
299
|
-
if (
|
|
300
|
-
let second = parseInt(
|
|
297
|
+
if (secondMatch[SECOND_GROUP]) {
|
|
298
|
+
let second = parseInt(secondMatch[SECOND_GROUP]);
|
|
301
299
|
if (isNaN(second)) {
|
|
302
|
-
second = zhStringToNumber(
|
|
300
|
+
second = zhStringToNumber(secondMatch[SECOND_GROUP]);
|
|
303
301
|
}
|
|
304
302
|
|
|
305
303
|
if (second >= 60) return null;
|
|
306
304
|
result.end.assign("second", second);
|
|
307
305
|
}
|
|
308
306
|
|
|
309
|
-
hour = parseInt(
|
|
307
|
+
hour = parseInt(secondMatch[HOUR_GROUP]);
|
|
310
308
|
if (isNaN(hour)) {
|
|
311
|
-
hour = zhStringToNumber(
|
|
309
|
+
hour = zhStringToNumber(secondMatch[HOUR_GROUP]);
|
|
312
310
|
}
|
|
313
311
|
|
|
314
312
|
// ----- Minutes
|
|
315
|
-
if (
|
|
316
|
-
if (
|
|
313
|
+
if (secondMatch[MINUTE_GROUP]) {
|
|
314
|
+
if (secondMatch[MINUTE_GROUP] == "半") {
|
|
317
315
|
minute = 30;
|
|
318
|
-
} else if (
|
|
316
|
+
} else if (secondMatch[MINUTE_GROUP] == "正" || secondMatch[MINUTE_GROUP] == "整") {
|
|
319
317
|
minute = 0;
|
|
320
318
|
} else {
|
|
321
|
-
minute = parseInt(
|
|
319
|
+
minute = parseInt(secondMatch[MINUTE_GROUP]);
|
|
322
320
|
if (isNaN(minute)) {
|
|
323
|
-
minute = zhStringToNumber(
|
|
321
|
+
minute = zhStringToNumber(secondMatch[MINUTE_GROUP]);
|
|
324
322
|
}
|
|
325
323
|
}
|
|
326
324
|
} else if (hour > 100) {
|
|
@@ -340,9 +338,9 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
340
338
|
}
|
|
341
339
|
|
|
342
340
|
// ----- AM & PM
|
|
343
|
-
if (
|
|
341
|
+
if (secondMatch[AM_PM_HOUR_GROUP]) {
|
|
344
342
|
if (hour > 12) return null;
|
|
345
|
-
const ampm =
|
|
343
|
+
const ampm = secondMatch[AM_PM_HOUR_GROUP][0].toLowerCase();
|
|
346
344
|
if (ampm == "a") {
|
|
347
345
|
meridiem = 0;
|
|
348
346
|
if (hour == 12) hour = 0;
|
|
@@ -368,8 +366,8 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
368
366
|
}
|
|
369
367
|
}
|
|
370
368
|
}
|
|
371
|
-
} else if (
|
|
372
|
-
const zhAMPMString1 =
|
|
369
|
+
} else if (secondMatch[ZH_AM_PM_HOUR_GROUP_1]) {
|
|
370
|
+
const zhAMPMString1 = secondMatch[ZH_AM_PM_HOUR_GROUP_1];
|
|
373
371
|
const zhAMPM1 = zhAMPMString1[0];
|
|
374
372
|
if (zhAMPM1 == "早") {
|
|
375
373
|
meridiem = 0;
|
|
@@ -378,8 +376,8 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
378
376
|
meridiem = 1;
|
|
379
377
|
if (hour != 12) hour += 12;
|
|
380
378
|
}
|
|
381
|
-
} else if (
|
|
382
|
-
const zhAMPMString2 =
|
|
379
|
+
} else if (secondMatch[ZH_AM_PM_HOUR_GROUP_2]) {
|
|
380
|
+
const zhAMPMString2 = secondMatch[ZH_AM_PM_HOUR_GROUP_2];
|
|
383
381
|
const zhAMPM2 = zhAMPMString2[0];
|
|
384
382
|
if (zhAMPM2 == "上" || zhAMPM2 == "早" || zhAMPM2 == "凌") {
|
|
385
383
|
meridiem = 0;
|
|
@@ -388,8 +386,8 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
388
386
|
meridiem = 1;
|
|
389
387
|
if (hour != 12) hour += 12;
|
|
390
388
|
}
|
|
391
|
-
} else if (
|
|
392
|
-
const zhAMPMString3 =
|
|
389
|
+
} else if (secondMatch[ZH_AM_PM_HOUR_GROUP_3]) {
|
|
390
|
+
const zhAMPMString3 = secondMatch[ZH_AM_PM_HOUR_GROUP_3];
|
|
393
391
|
const zhAMPM3 = zhAMPMString3[0];
|
|
394
392
|
if (zhAMPM3 == "上" || zhAMPM3 == "早" || zhAMPM3 == "凌") {
|
|
395
393
|
meridiem = 0;
|
|
@@ -400,7 +398,7 @@ export default class ZHHansTimeExpressionParser extends AbstractParserWithWordBo
|
|
|
400
398
|
}
|
|
401
399
|
}
|
|
402
400
|
|
|
403
|
-
result.text = result.text +
|
|
401
|
+
result.text = result.text + secondMatch[0];
|
|
404
402
|
result.end.assign("hour", hour);
|
|
405
403
|
result.end.assign("minute", minute);
|
|
406
404
|
if (meridiem >= 0) {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import dayjs from "dayjs";
|
|
2
1
|
import { ParsingContext } from "../../../../chrono";
|
|
3
2
|
import { AbstractParserWithWordBoundaryChecking } from "../../../../common/parsers/AbstractParserWithWordBoundary";
|
|
4
3
|
import { ParsingResult } from "../../../../results";
|
|
@@ -18,27 +17,29 @@ export default class ZHHansWeekdayParser extends AbstractParserWithWordBoundaryC
|
|
|
18
17
|
const offset = WEEKDAY_OFFSET[dayOfWeek];
|
|
19
18
|
if (offset === undefined) return null;
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
const date = new Date(context.refDate.getTime());
|
|
22
21
|
const startMomentFixed = false;
|
|
23
|
-
const refOffset =
|
|
22
|
+
const refOffset = date.getDay();
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
let diff = offset - refOffset;
|
|
25
|
+
if (Math.abs(diff - 7) < Math.abs(diff)) {
|
|
26
|
+
diff -= 7;
|
|
27
|
+
}
|
|
28
|
+
if (Math.abs(diff + 7) < Math.abs(diff)) {
|
|
29
|
+
diff += 7;
|
|
31
30
|
}
|
|
32
31
|
|
|
32
|
+
date.setDate(date.getDate() + diff);
|
|
33
|
+
|
|
33
34
|
result.start.assign("weekday", offset);
|
|
34
35
|
if (startMomentFixed) {
|
|
35
|
-
result.start.assign("day",
|
|
36
|
-
result.start.assign("month",
|
|
37
|
-
result.start.assign("year",
|
|
36
|
+
result.start.assign("day", date.getDate());
|
|
37
|
+
result.start.assign("month", date.getMonth() + 1);
|
|
38
|
+
result.start.assign("year", date.getFullYear());
|
|
38
39
|
} else {
|
|
39
|
-
result.start.imply("day",
|
|
40
|
-
result.start.imply("month",
|
|
41
|
-
result.start.imply("year",
|
|
40
|
+
result.start.imply("day", date.getDate());
|
|
41
|
+
result.start.imply("month", date.getMonth() + 1);
|
|
42
|
+
result.start.imply("year", date.getFullYear());
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
return result;
|