예제 #1
0
        /// <summary>
        /// Combine combines a child with a parent as necessary and returns the combined object
        /// </summary>
        /// <param name="combinedRuleBasedNumberFormatting">The child object</param>
        /// <param name="parentRuleBasedNumberFormatting">The parent object</param>
        /// <returns>The combined object</returns>
        public static RuleBasedNumberFormatting Combine(RuleBasedNumberFormatting combinedRuleBasedNumberFormatting, RuleBasedNumberFormatting parentRuleBasedNumberFormatting)
        {
            if (combinedRuleBasedNumberFormatting == null && parentRuleBasedNumberFormatting == null)
            {
                return(null);
            }
            else if (combinedRuleBasedNumberFormatting == null)
            {
                return((RuleBasedNumberFormatting)parentRuleBasedNumberFormatting.Clone());
            }
            else if (parentRuleBasedNumberFormatting == null)
            {
                return(combinedRuleBasedNumberFormatting);
            }

            combinedRuleBasedNumberFormatting.OrdinalRuleSets =
                CombineArrays <RuleBasedNumberFormattingRuleSet>(
                    combinedRuleBasedNumberFormatting.OrdinalRuleSets,
                    parentRuleBasedNumberFormatting.OrdinalRuleSets,
                    (item, parent) => string.Compare(item.Id, parent.Id, StringComparison.InvariantCulture) == 0);

            combinedRuleBasedNumberFormatting.SpelloutRuleSets =
                CombineArrays <RuleBasedNumberFormattingRuleSet>(
                    combinedRuleBasedNumberFormatting.SpelloutRuleSets,
                    parentRuleBasedNumberFormatting.SpelloutRuleSets,
                    (item, parent) => string.Compare(item.Id, parent.Id, StringComparison.InvariantCulture) == 0);

            return(combinedRuleBasedNumberFormatting);
        }
예제 #2
0
        /// <summary>
        /// GetRuleBasedNumberFormatting gets the resolved RuleBasedNumberFormatting
        /// </summary>
        /// <returns>The resolved RuleBasedNumberFormatting</returns>
        private RuleBasedNumberFormatting GetRuleBasedNumberFormatting()
        {
            RuleBasedNumberFormatting ruleBasedNumberFormatting = null;

            if (this.ruleBasedNumberFormattingNoParents != null)
            {
                ruleBasedNumberFormatting = (RuleBasedNumberFormatting)this.ruleBasedNumberFormattingNoParents.Clone();
            }

            Culture[] parentCultures = this.GetParents();
            foreach (Culture parentCulture in parentCultures)
            {
                ruleBasedNumberFormatting = RuleBasedNumberFormatting.Combine(ruleBasedNumberFormatting, parentCulture.ruleBasedNumberFormattingNoParents);
            }

            return(ruleBasedNumberFormatting);
        }
예제 #3
0
 /// <summary>
 /// Initializes a new instance of the Culture class
 /// </summary>
 /// <param name="cultureData">The CultureData for this language/script/region/variant</param>
 public Culture(CultureData cultureData)
 {
     this.casingNoParents                    = cultureData.Casing;
     this.charactersNoParents                = cultureData.Characters;
     this.datesNoParents                     = cultureData.Dates;
     this.delimitersNoParents                = cultureData.Delimiters;
     this.Identity                           = cultureData.Identity;
     this.languageDisplayNamesNoParents      = cultureData.LanguageDisplayNames;
     this.layoutNoParents                    = cultureData.Layout;
     this.listPatternsNoParents              = cultureData.ListPatterns;
     this.messagesNoParents                  = cultureData.Messages;
     this.numbersNoParents                   = cultureData.Numbers;
     this.regionDisplayNamesNoParents        = cultureData.RegionDisplayNames;
     this.ruleBasedNumberFormattingNoParents = cultureData.RuleBasedNumberFormatting;
     this.scriptDisplayNamesNoParents        = cultureData.ScriptDisplayNames;
     this.unitPatternSetsNoParents           = cultureData.UnitPatternSets;
 }