Example #1
0
 public JapaneseDateTimeExtractorConfiguration(IDateTimeOptionsConfiguration config)
     : base(config)
 {
     DatePointExtractor = new BaseCJKDateExtractor(new JapaneseDateExtractorConfiguration(this));
     TimePointExtractor = new BaseCJKTimeExtractor(new JapaneseTimeExtractorConfiguration(this));
     DurationExtractor  = new BaseCJKDurationExtractor(new JapaneseDurationExtractorConfiguration(this));
 }
Example #2
0
 public KoreanDateTimeExtractorConfiguration(IDateTimeOptionsConfiguration config)
     : base(config)
 {
     DatePointExtractor = new BaseCJKDateExtractor(new KoreanDateExtractorConfiguration(this));
     TimePointExtractor = new BaseCJKTimeExtractor(new KoreanTimeExtractorConfiguration(this));
     DurationExtractor  = new BaseCJKDurationExtractor(new KoreanDurationExtractorConfiguration(this));
 }
Example #3
0
        public JapaneseDateExtractorConfiguration(IDateTimeOptionsConfiguration config)
            : base(config)
        {
            var durationConfig = new BaseDateTimeOptionsConfiguration(config.Culture, DateTimeOptions.None);

            DurationExtractor = new BaseCJKDurationExtractor(new JapaneseDurationExtractorConfiguration(durationConfig));

            ImplicitDateList = new List <Regex>
            {
                LunarRegex, SpecialDayWithNumRegex, SpecialDayRegex, ThisRegex, LastRegex, NextRegex,
                WeekDayRegex, WeekDayOfMonthRegex, SpecialDate, WeekDayAndDayRegex,
            };

            // 2016年12月1日
            var dateRegex1 = new Regex(DateTimeDefinitions.DateRegexList1, RegexFlags);

            // # 2016年12月 (this is not a Date)
            // var dateRegex2 = new Regex(DateTimeDefinitions.DateRegexList2, RegexFlags);

            // (2015年)?(农历)?十月二十(星期三)?
            var dateRegex3 = new Regex(DateTimeDefinitions.DateRegexList3, RegexFlags);

            // 2015-12-23
            var dateRegex8 = new Regex(DateTimeDefinitions.DateRegexList8, RegexFlags);

            // 23/7
            var dateRegex5 = new Regex(DateTimeDefinitions.DateRegexList5, RegexFlags);

            // 7/23
            var dateRegex4 = new Regex(DateTimeDefinitions.DateRegexList4, RegexFlags);

            // 23-3-2017
            var dateRegex7 = new Regex(DateTimeDefinitions.DateRegexList7, RegexFlags);

            // 3-23-2015
            var dateRegex6 = new Regex(DateTimeDefinitions.DateRegexList6, RegexFlags);

            // 12月1日
            var dateRegex9 = new Regex(DateTimeDefinitions.DateRegexList9, RegexFlags);

            // 2015/12/23
            var dateRegex10 = new Regex(DateTimeDefinitions.DateRegexList10, RegexFlags);

            // 2016/12 (this is not a Date)
            // var dateRegex11 = new Regex(DateTimeDefinitions.DateRegexList11, RegexFlags);

            // Regex precedence where the order between D and M varies is controlled by DefaultLanguageFallback
            var enableDmy = DateTimeDefinitions.DefaultLanguageFallback == Constants.DefaultLanguageFallback_DMY;

            DateRegexList = new List <Regex> {
                dateRegex1, dateRegex10, /*dateRegex2, */ dateRegex9, dateRegex3, dateRegex4, dateRegex5
            };
            DateRegexList = DateRegexList.Concat(
                enableDmy ?
                new[] { dateRegex7, dateRegex6, dateRegex8 /*, dateRegex11*/ } :
                new[] { dateRegex6, dateRegex7, dateRegex8 /*, dateRegex11*/ });

            NormalizeCharMap = DateTimeDefinitions.NormalizeCharMap;
        }
Example #4
0
        public KoreanDateExtractorConfiguration(IDateTimeOptionsConfiguration config)
            : base(config)
        {
            var durationConfig = new BaseDateTimeOptionsConfiguration(config.Culture, DateTimeOptions.None);

            DurationExtractor = new BaseCJKDurationExtractor(new KoreanDurationExtractorConfiguration(durationConfig));

            ImplicitDateList = new List <Regex>
            {
                LunarRegex, SpecialDayRegex, ThisRegex, LastRegex, NextRegex,
                WeekDayRegex, WeekDayOfMonthRegex, SpecialDate, DurationFromSpecialDayRegex,
            };

            // (음력)? (2016)? 1 월 3 일 (수)?
            var dateRegex1 = new Regex(DateTimeDefinitions.DateRegexList1, RegexFlags);

            // (2015)? (음력)? 10 월 1 일 (수)?
            var dateRegex2 = new Regex(DateTimeDefinitions.DateRegexList2, RegexFlags);

            // (2015)? (음력)? 10 월 20 일 (수)?
            var dateRegex3 = new Regex(DateTimeDefinitions.DateRegexList3, RegexFlags);

            // 2015-12-23
            var dateRegex8 = new Regex(DateTimeDefinitions.DateRegexList8, RegexFlags);

            var dateRegex9 = new Regex(DateTimeDefinitions.DateRegexList9, RegexFlags);

            // 23/7
            var dateRegex5 = new Regex(DateTimeDefinitions.DateRegexList5, RegexFlags);

            // 7/23
            var dateRegex4 = new Regex(DateTimeDefinitions.DateRegexList4, RegexFlags);

            // 23-3-2017
            var dateRegex7 = new Regex(DateTimeDefinitions.DateRegexList7, RegexFlags);

            // 3-23-2015
            var dateRegex6 = new Regex(DateTimeDefinitions.DateRegexList6, RegexFlags);

            // Regex precedence where the order between D and M varies is controlled by DefaultLanguageFallback
            var enableDmy = DateTimeDefinitions.DefaultLanguageFallback == Constants.DefaultLanguageFallback_DMY;
            var enableYmd = DateTimeDefinitions.DefaultLanguageFallback == Constants.DefaultLanguageFallback_YMD;

            DateRegexList = new List <Regex> {
                dateRegex1, dateRegex2, dateRegex3, dateRegex8, dateRegex9
            };
            DateRegexList = DateRegexList.Concat(
                enableDmy ?
                new[] { dateRegex5, dateRegex4, dateRegex7, dateRegex6 } :
                enableYmd ?
                new[] { dateRegex4, dateRegex5, dateRegex7, dateRegex6 } :
                new[] { dateRegex4, dateRegex5, dateRegex6, dateRegex7 });

            NormalizeCharMap = null;
        }
 public ChineseSetExtractorConfiguration(IDateTimeOptionsConfiguration config)
     : base(config)
 {
     DurationExtractor       = new BaseCJKDurationExtractor(new ChineseDurationExtractorConfiguration(this));
     TimeExtractor           = new BaseCJKTimeExtractor(new ChineseTimeExtractorConfiguration(this));
     DateExtractor           = new BaseCJKDateExtractor(new ChineseDateExtractorConfiguration(this));
     DateTimeExtractor       = new BaseCJKDateTimeExtractor(new ChineseDateTimeExtractorConfiguration(this));
     DatePeriodExtractor     = new BaseCJKDatePeriodExtractor(new ChineseDatePeriodExtractorConfiguration(this));
     TimePeriodExtractor     = new BaseCJKTimePeriodExtractor(new ChineseTimePeriodExtractorConfiguration(this));
     DateTimePeriodExtractor = new BaseCJKDateTimePeriodExtractor(new ChineseDateTimePeriodExtractorConfiguration(this));
 }
Example #6
0
        public ChineseDateExtractorConfiguration(IDateTimeOptionsConfiguration config)
            : base(config)
        {
            var durationConfig = new BaseDateTimeOptionsConfiguration(config.Culture, DateTimeOptions.None);

            DurationExtractor = new BaseCJKDurationExtractor(new ChineseDurationExtractorConfiguration(durationConfig));

            ImplicitDateList = new List <Regex>
            {
                LunarRegex, SpecialDayRegex, ThisRegex, LastRegex, NextRegex,
                WeekDayRegex, WeekDayOfMonthRegex, SpecialDate,
            };

            // (农历)?(2016年)?一月三日(星期三)?
            var dateRegex1 = new Regex(DateTimeDefinitions.DateRegexList1, RegexFlags);

            // (2015年)?(农历)?十月初一(星期三)?
            var dateRegex2 = new Regex(DateTimeDefinitions.DateRegexList2, RegexFlags);

            // (2015年)?(农历)?十月二十(星期三)?
            var dateRegex3 = new Regex(DateTimeDefinitions.DateRegexList3, RegexFlags);

            // 2015-12-23 - This regex represents the standard format in Chinese dates (YMD) and has precedence over other orderings
            var dateRegex8 = new Regex(DateTimeDefinitions.DateRegexList8, RegexFlags);

            // 23/7
            var dateRegex5 = new Regex(DateTimeDefinitions.DateRegexList5, RegexFlags);

            // 7/23
            var dateRegex4 = new Regex(DateTimeDefinitions.DateRegexList4, RegexFlags);

            // 23-3-2017
            var dateRegex7 = new Regex(DateTimeDefinitions.DateRegexList7, RegexFlags);

            // 3-23-2015
            var dateRegex6 = new Regex(DateTimeDefinitions.DateRegexList6, RegexFlags);

            // Regex precedence where the order between D and M varies is controlled by DefaultLanguageFallback
            var enableDmy = DateTimeDefinitions.DefaultLanguageFallback == Constants.DefaultLanguageFallback_DMY;
            var enableYmd = DateTimeDefinitions.DefaultLanguageFallback == Constants.DefaultLanguageFallback_YMD;

            DateRegexList = new List <Regex> {
                dateRegex1, dateRegex2, dateRegex3, dateRegex8
            };
            DateRegexList = DateRegexList.Concat(
                enableDmy ?
                new[] { dateRegex5, dateRegex4, dateRegex7, dateRegex6 } :
                enableYmd ?
                new[] { dateRegex4, dateRegex5, dateRegex7, dateRegex6 } :
                new[] { dateRegex4, dateRegex5, dateRegex6, dateRegex7 });

            NormalizeCharMap = null;
        }
        public ChineseMergedExtractorConfiguration(IDateTimeOptionsConfiguration config)
            : base(config)
        {
            AmbiguityFiltersDict = DefinitionLoader.LoadAmbiguityFilters(DateTimeDefinitions.AmbiguityFiltersDict);

            DateExtractor           = new BaseCJKDateExtractor(new ChineseDateExtractorConfiguration(this));
            TimeExtractor           = new BaseCJKTimeExtractor(new ChineseTimeExtractorConfiguration(this));
            DateTimeExtractor       = new BaseCJKDateTimeExtractor(new ChineseDateTimeExtractorConfiguration(this));
            DatePeriodExtractor     = new BaseCJKDatePeriodExtractor(new ChineseDatePeriodExtractorConfiguration(this));
            TimePeriodExtractor     = new BaseCJKTimePeriodExtractor(new ChineseTimePeriodExtractorConfiguration(this));
            DateTimePeriodExtractor = new BaseCJKDateTimePeriodExtractor(new ChineseDateTimePeriodExtractorConfiguration(this));
            DurationExtractor       = new BaseCJKDurationExtractor(new ChineseDurationExtractorConfiguration(this));
            SetExtractor            = new BaseCJKSetExtractor(new ChineseSetExtractorConfiguration(this));
            HolidayExtractor        = new BaseCJKHolidayExtractor(new ChineseHolidayExtractorConfiguration(this));
        }
        public ChineseDurationParserConfiguration(ICJKCommonDateTimeParserConfiguration config)
            : base(config)
        {
            InternalParser = new NumberWithUnitParser(new DurationParserConfiguration());

            var durationConfig = new BaseDateTimeOptionsConfiguration(config.Culture, DateTimeOptions.None);

            DurationExtractor = new BaseCJKDurationExtractor(new ChineseDurationExtractorConfiguration(durationConfig), false);

            YearRegex              = ChineseDurationExtractorConfiguration.YearRegex;
            DurationUnitRegex      = ChineseDurationExtractorConfiguration.DurationUnitRegex;
            DurationConnectorRegex = ChineseDurationExtractorConfiguration.DurationConnectorRegex;

            UnitMap      = config.UnitMap;
            UnitValueMap = config.UnitValueMap;
        }
Example #9
0
        public ChineseCommonDateTimeParserConfiguration(IDateTimeOptionsConfiguration config)
            : base(config)
        {
            UnitMap      = DateTimeDefinitions.ParserConfigurationUnitMap.ToImmutableDictionary(k => k.Key, k => k.Value.Substring(0, 1) + k.Value.Substring(1).ToLower());
            UnitValueMap = DateTimeDefinitions.DurationUnitValueMap.ToImmutableDictionary();
            CardinalMap  = DateTimeDefinitions.ParserConfigurationCardinalMap.ToImmutableDictionary();
            DayOfMonth   = DateTimeDefinitions.ParserConfigurationDayOfMonth.ToImmutableDictionary();
            DayOfWeek    = DateTimeDefinitions.ParserConfigurationDayOfWeek.ToImmutableDictionary();
            MonthOfYear  = DateTimeDefinitions.ParserConfigurationMonthOfYear.ToImmutableDictionary();

            var numOptions = NumberOptions.None;

            if ((config.Options & DateTimeOptions.NoProtoCache) != 0)
            {
                numOptions = NumberOptions.NoProtoCache;
            }

            var numConfig = new BaseNumberOptionsConfiguration(config.Culture, numOptions);

            IntegerExtractor  = new IntegerExtractor(numConfig);
            CardinalExtractor = new CardinalExtractor(numConfig);
            OrdinalExtractor  = new OrdinalExtractor(numConfig);

            NumberParser = new BaseCJKNumberParser(new ChineseNumberParserConfiguration(numConfig));

            // Do not change order. The order of initialization can lead to side-effects
            DateExtractor           = new BaseCJKDateExtractor(new ChineseDateExtractorConfiguration(this));
            TimeExtractor           = new BaseCJKTimeExtractor(new ChineseTimeExtractorConfiguration(this));
            DateTimeExtractor       = new BaseCJKDateTimeExtractor(new ChineseDateTimeExtractorConfiguration(this));
            DurationExtractor       = new BaseCJKDurationExtractor(new ChineseDurationExtractorConfiguration(this));
            DatePeriodExtractor     = new BaseCJKDatePeriodExtractor(new ChineseDatePeriodExtractorConfiguration(this));
            TimePeriodExtractor     = new BaseCJKTimePeriodExtractor(new ChineseTimePeriodExtractorConfiguration(this));
            DateTimePeriodExtractor = new BaseCJKDateTimePeriodExtractor(new ChineseDateTimePeriodExtractorConfiguration(this));
            HolidayExtractor        = new BaseCJKDurationExtractor(new ChineseDurationExtractorConfiguration(this));
            SetExtractor            = new BaseCJKDurationExtractor(new ChineseDurationExtractorConfiguration(this));

            DurationParser       = new BaseCJKDurationParser(new ChineseDurationParserConfiguration(this));
            DateParser           = new BaseCJKDateParser(new ChineseDateParserConfiguration(this));
            TimeParser           = new BaseCJKTimeParser(new ChineseTimeParserConfiguration(this));
            DateTimeParser       = new BaseCJKDateTimeParser(new ChineseDateTimeParserConfiguration(this));
            DatePeriodParser     = new BaseCJKDatePeriodParser(new ChineseDatePeriodParserConfiguration(this));
            TimePeriodParser     = new BaseCJKTimePeriodParser(new ChineseTimePeriodParserConfiguration(this));
            DateTimePeriodParser = new BaseCJKDateTimePeriodParser(new ChineseDateTimePeriodParserConfiguration(this));
            HolidayParser        = new BaseCJKHolidayParser(new ChineseHolidayParserConfiguration(this));
            SetParser            = new BaseCJKSetParser(new ChineseSetParserConfiguration(this));
        }
        public JapaneseDatePeriodExtractorConfiguration(IDateTimeOptionsConfiguration config)
            : base(config)
        {
            DatePointExtractor = new BaseCJKDateExtractor(new JapaneseDateExtractorConfiguration(this));
            DurationExtractor  = new BaseCJKDurationExtractor(new JapaneseDurationExtractorConfiguration(this));

            var numOptions = NumberOptions.None;

            if ((config.Options & DateTimeOptions.NoProtoCache) != 0)
            {
                numOptions = NumberOptions.NoProtoCache;
            }

            var numConfig = new BaseNumberOptionsConfiguration(config.Culture, numOptions);

            IntegerExtractor = new IntegerExtractor(numConfig);
        }
Example #11
0
        public KoreanDateTimePeriodExtractorConfiguration(IDateTimeOptionsConfiguration config)
            : base(config)
        {
            var numOptions = NumberOptions.None;

            if ((config.Options & DateTimeOptions.NoProtoCache) != 0)
            {
                numOptions = NumberOptions.NoProtoCache;
            }

            var numConfig = new BaseNumberOptionsConfiguration(config.Culture, numOptions);

            CardinalExtractor = new CardinalExtractor(numConfig);

            SingleDateExtractor     = new BaseCJKDateExtractor(new KoreanDateExtractorConfiguration(this));
            SingleTimeExtractor     = new BaseCJKTimeExtractor(new KoreanTimeExtractorConfiguration(this));
            SingleDateTimeExtractor = new BaseCJKDateTimeExtractor(new KoreanDateTimeExtractorConfiguration(this));
            DurationExtractor       = new BaseCJKDurationExtractor(new KoreanDurationExtractorConfiguration(this));
            TimePeriodExtractor     = new BaseCJKTimePeriodExtractor(new KoreanTimePeriodExtractorConfiguration(this));
        }