// input: "VII-VI secolo" or "III-II secolo a.C."
        // output: { min: 601, max: 800, label: "VII-VI secolo" }
        public static IYearSpan Match(string input, EnumLanguage language = EnumLanguage.NONE)
        {
            Match m = Regex.Match(input.Trim(), GetPattern(language), options);

            if (!m.Success)
            {
                return(null);
            }

            string century    = "";
            int    centuryMin = 0;
            int    centuryMax = 0;

            century    = m.Groups["centuryMin"].Value;
            centuryMin = Regex.IsMatch(century, ROMAN) ? RomanToNumber.Parse(century) : Int32.Parse(century);

            century    = m.Groups["centuryMax"].Value;
            centuryMax = Regex.IsMatch(century, ROMAN) ? RomanToNumber.Parse(century) : Int32.Parse(century);

            EnumDatePrefix prefix1 = m.Groups["prefix1"] != null ? Lookup <EnumDatePrefix> .Match(m.Groups["prefix1"].Value, language) : EnumDatePrefix.NONE;

            EnumDatePrefix prefix2 = m.Groups["prefix2"] != null ? Lookup <EnumDatePrefix> .Match(m.Groups["prefix2"].Value, language) : EnumDatePrefix.NONE;

            EnumDateSuffix suffix = m.Groups["suffix"] != null ? Lookup <EnumDateSuffix> .Match(m.Groups["suffix"].Value, language) : EnumDateSuffix.NONE;

            IYearSpan centuryMinSpan = getCenturyYearSpan(centuryMin, prefix1, suffix);
            IYearSpan centuryMaxSpan = getCenturyYearSpan(centuryMax, prefix2, suffix);

            return(new YearSpan(Math.Min(centuryMinSpan.min, centuryMaxSpan.min), Math.Max(centuryMinSpan.max, centuryMaxSpan.max), input, "RxFromCenturyToCentury"));
        }
示例#2
0
        //public override IYearSpan Match(string input, EnumLanguage language)
        public static IYearSpan Match(string input, EnumLanguage language = EnumLanguage.NONE)
        {
            string pattern = GetPattern(language);
            Match  m       = Regex.Match(input.Trim(), pattern, options);

            // no patterns matched?
            if (!m.Success)
            {
                return(null);
            }

            // if we reach here we matched so get the represented year span
            string         centuryString = m.Groups["century"].Value.Trim().ToUpper();
            int            centuryNo     = Regex.IsMatch(centuryString, ROMAN) ? RomanToNumber.Parse(centuryString) : Int32.Parse(centuryString);
            EnumDatePrefix prefix        = m.Groups["prefix"] != null ? Lookup <EnumDatePrefix> .Match(m.Groups["prefix"].Value, language) : EnumDatePrefix.NONE;

            EnumDateSuffix suffix = m.Groups["suffix"] != null ? Lookup <EnumDateSuffix> .Match(m.Groups["suffix"].Value, language) : EnumDateSuffix.NONE;

            IYearSpan span = getCenturyYearSpan(centuryNo, prefix, suffix);

            span.label = input.Trim();
            span.note  = "RxCardinalCentury"; //this.GetType().Name;
            return(span);
        }
        // input: "1st millennium" "I millennio a.C." (with language parameter)
        // output: { min: 1, max: 1000, label: "1st millennium" }
        public static IYearSpan Match(string input, EnumLanguage language = EnumLanguage.NONE)
        {
            string pattern = Pattern(language);
            Match  m       = Regex.Match(input, pattern, options);

            // no patterns matched?
            if (!m.Success)
            {
                return(null);
            }

            // if we reach here we matched so get the represented year span
            string         s          = m.Groups["millennium"] != null ? m.Groups["millennium"].Value.Trim() : "0";
            int            millennium = Regex.IsMatch(s, ROMAN) ? RomanToNumber.Parse(s) : Int32.Parse(s);
            EnumDatePrefix prefix     = m.Groups["prefix"] != null ? Lookup <EnumDatePrefix> .Match(m.Groups["prefix"].Value, language) : EnumDatePrefix.NONE;

            EnumDateSuffix suffix = m.Groups["suffix"] != null ? Lookup <EnumDateSuffix> .Match(m.Groups["suffix"].Value, language) : EnumDateSuffix.NONE;

            IYearSpan span = getMillenniumYearSpan(millennium, prefix, suffix);

            span.label = input.Trim();
            span.note  = "RxOrdinalNumberedMillennium";
            return(span);
        }