示例#1
0
        /// <summary>
        /// Returns true if the given object is selected by this selector rule.
        /// </summary>
        /// <param name="mapCSSObject"></param>
        /// <returns></returns>
        internal override bool Selects(MapCSSObject mapCSSObject)
        {
            string tagValue;

            if (mapCSSObject.TryGetValue(this.Tag, out tagValue))
            {
                double valueDouble;
                double tagValueDouble;
                switch (this.Comparator)
                {
                case SelectorRuleTagValueComparisonEnum.Equal:
                    return(tagValue == this.Value);

                case SelectorRuleTagValueComparisonEnum.NotEqual:
                    return(tagValue != this.Value);

                case SelectorRuleTagValueComparisonEnum.GreaterThan:
                    if (double.TryParse(this.Value, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out valueDouble) &&
                        (double.TryParse(tagValue, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out tagValueDouble)))
                    {
                        return(tagValueDouble > valueDouble);
                    }
                    break;

                case SelectorRuleTagValueComparisonEnum.GreaterThanOrEqual:
                    if (double.TryParse(this.Value, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out valueDouble) &&
                        (double.TryParse(tagValue, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out tagValueDouble)))
                    {
                        return(tagValueDouble >= valueDouble);
                    }
                    break;

                case SelectorRuleTagValueComparisonEnum.SmallerThan:
                    if (double.TryParse(this.Value, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out valueDouble) &&
                        (double.TryParse(tagValue, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out tagValueDouble)))
                    {
                        return(tagValueDouble < valueDouble);
                    }
                    break;

                case SelectorRuleTagValueComparisonEnum.SmallerThanOrEqual:
                    if (double.TryParse(this.Value, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out valueDouble) &&
                        (double.TryParse(tagValue, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out tagValueDouble)))
                    {
                        return(tagValueDouble <= valueDouble);
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                return(mapCSSObject.ContainsKey(this.Tag));
            }
            return(false);
        }
示例#2
0
 /// <summary>
 /// Returns true if the given object is selected by this selector rule.
 /// </summary>
 /// <param name="mapCSSObject"></param>
 /// <returns></returns>
 internal override bool Selects(MapCSSObject mapCSSObject)
 {
     string tagValue;
     if (mapCSSObject.TryGetValue(this.Tag, out tagValue))
     {
         double valueDouble;
         double tagValueDouble;
         switch (this.Comparator)
         {
             case SelectorRuleTagValueComparisonEnum.Equal:
                 return tagValue == this.Value;
             case SelectorRuleTagValueComparisonEnum.NotEqual:
                 return tagValue != this.Value;
             case SelectorRuleTagValueComparisonEnum.GreaterThan:
                 if (double.TryParse(this.Value, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out valueDouble) &&
                     (double.TryParse(tagValue, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out tagValueDouble)))
                 {
                     return tagValueDouble > valueDouble;
                 }
                 break;
             case SelectorRuleTagValueComparisonEnum.GreaterThanOrEqual:
                 if (double.TryParse(this.Value, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out valueDouble) &&
                     (double.TryParse(tagValue, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out tagValueDouble)))
                 {
                     return tagValueDouble >= valueDouble;
                 }
                 break;
             case SelectorRuleTagValueComparisonEnum.SmallerThan:
                 if (double.TryParse(this.Value, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out valueDouble) &&
                     (double.TryParse(tagValue, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out tagValueDouble)))
                 {
                     return tagValueDouble < valueDouble;
                 }
                 break;
             case SelectorRuleTagValueComparisonEnum.SmallerThanOrEqual:
                 if (double.TryParse(this.Value, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out valueDouble) &&
                     (double.TryParse(tagValue, NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out tagValueDouble)))
                 {
                     return tagValueDouble <= valueDouble;
                 }
                 break;
             default:
                 throw new ArgumentOutOfRangeException();
         }
         return mapCSSObject.ContainsKey(this.Tag);
     }
     return false;
 }
示例#3
0
 /// <summary>
 /// Returns true if the given object is selected by this selector rule.
 /// </summary>
 /// <param name="mapCSSObject"></param>
 /// <returns></returns>
 internal override bool Selects(MapCSSObject mapCSSObject)
 {
     return mapCSSObject.ContainsKey(this.Tag);
 }
示例#4
0
 /// <summary>
 /// Returns true if the given object is selected by this selector rule.
 /// </summary>
 /// <param name="mapCSSObject"></param>
 /// <returns></returns>
 internal override bool Selects(MapCSSObject mapCSSObject)
 {
     return(mapCSSObject.ContainsKey(this.Tag));
 }