예제 #1
0
        /// <summary> Determines whether the given condition is valid according to this
        /// validator's policy.
        ///
        /// </summary>
        /// <param name="selectorName">the name of the selector that contains this condition
        /// </param>
        /// <param name="condition">the object representation of this condition
        /// </param>
        /// <param name="results">the <code>CleanResults</code> object to add any error
        /// messages to
        /// </param>
        /// <returns> true if this condition is valid; false otherwise
        /// </returns>
        public virtual bool isValidCondition(string selectorName, Condition condition, CleanResults results)
        {
            switch (condition.getConditionType())
            {
            //case CssValidator.SAC_AND_CONDITION:
            case CssValidator.SAC_OR_CONDITION:
                // these are compound condition - decompose into simple conditions
                CombinatorCondition comboCondition = (CombinatorCondition)condition;
                return(isValidCondition(selectorName, comboCondition.getFirstCondition(), results) & isValidCondition(selectorName, comboCondition.getSecondCondition(), results));

            case CssValidator.SAC_CLASS_CONDITION:
                // this is a basic class condition; compare condition against
                // valid pattern and is not blacklisted by exclusion pattern
                return(validateCondition((AttributeCondition)condition, policy.getRegularExpression("cssClassSelector"), policy.getRegularExpression("cssClassExclusion"), results));

            case CssValidator.SAC_ID_CONDITION:
                // this is a basic ID condition; compare condition against
                // valid pattern and is not blacklisted by exclusion pattern
                return(validateCondition((AttributeCondition)condition, policy.getRegularExpression("cssIDSelector"), policy.getRegularExpression("cssIDExclusion"), results));

            case CssValidator.SAC_PSEUDO_CLASS_CONDITION:
                // this is a basic psuedo element condition; compare condition
                // against valid pattern and is not blacklisted by exclusion pattern
                return(validateCondition((AttributeCondition)condition, policy.getRegularExpression("cssPseudoElementSelector"), policy.getRegularExpression("cssPsuedoElementExclusion"), results));

            case CssValidator.SAC_BEGIN_HYPHEN_ATTRIBUTE_CONDITION:
            case CssValidator.SAC_ONE_OF_ATTRIBUTE_CONDITION:
            case CssValidator.SAC_ATTRIBUTE_CONDITION:
                // this is a basic class condition; compare condition against
                // valid pattern and is not blacklisted by exclusion pattern
                return(validateCondition((AttributeCondition)condition, policy.getRegularExpression("cssAttributeSelector"), policy.getRegularExpression("cssAttributeExclusion"), results));

            case CssValidator.SAC_NEGATIVE_CONDITION:
                // this is a compound condition; decompose to simple condition
                return(isValidCondition(selectorName, ((NegativeCondition)condition).getCondition(), results));

            case CssValidator.SAC_ONLY_CHILD_CONDITION:
            case CssValidator.SAC_ONLY_TYPE_CONDITION:
                // :only-child and :only-of-type are constants
                return(true);

            case CssValidator.SAC_POSITIONAL_CONDITION:
            case CssValidator.SAC_CONTENT_CONDITION:
            case CssValidator.SAC_LANG_CONDITION:
            default:
                results.addErrorMessage("Unknown condition for selector " + HTMLEntityEncoder.htmlEntityEncode(selectorName) + " encountered");
                return(false);
            }
        }
예제 #2
0
        /// <summary> Determines whether the given condition is valid according to this
        /// validator's policy.
        /// 
        /// </summary>
        /// <param name="selectorName">the name of the selector that contains this condition
        /// </param>
        /// <param name="condition">the object representation of this condition
        /// </param>
        /// <param name="results">the <code>CleanResults</code> object to add any error
        /// messages to
        /// </param>
        /// <returns> true if this condition is valid; false otherwise
        /// </returns>
        public virtual bool isValidCondition(string selectorName, Condition condition, CleanResults results)
        {
            switch (condition.getConditionType())
            {

                //case CssValidator.SAC_AND_CONDITION:
                case CssValidator.SAC_OR_CONDITION:
                    // these are compound condition - decompose into simple conditions
                    CombinatorCondition comboCondition = (CombinatorCondition)condition;
                    return isValidCondition(selectorName, comboCondition.getFirstCondition(), results) & isValidCondition(selectorName, comboCondition.getSecondCondition(), results);

                case CssValidator.SAC_CLASS_CONDITION:
                    // this is a basic class condition; compare condition against
                    // valid pattern and is not blacklisted by exclusion pattern
                    return validateCondition((AttributeCondition)condition, policy.getRegularExpression("cssClassSelector"), policy.getRegularExpression("cssClassExclusion"), results);

                case CssValidator.SAC_ID_CONDITION:
                    // this is a basic ID condition; compare condition against
                    // valid pattern and is not blacklisted by exclusion pattern
                    return validateCondition((AttributeCondition)condition, policy.getRegularExpression("cssIDSelector"), policy.getRegularExpression("cssIDExclusion"), results);

                case CssValidator.SAC_PSEUDO_CLASS_CONDITION:
                    // this is a basic psuedo element condition; compare condition
                    // against valid pattern and is not blacklisted by exclusion pattern
                    return validateCondition((AttributeCondition)condition, policy.getRegularExpression("cssPseudoElementSelector"), policy.getRegularExpression("cssPsuedoElementExclusion"), results);

                case CssValidator.SAC_BEGIN_HYPHEN_ATTRIBUTE_CONDITION:
                case CssValidator.SAC_ONE_OF_ATTRIBUTE_CONDITION:
                case CssValidator.SAC_ATTRIBUTE_CONDITION:
                    // this is a basic class condition; compare condition against
                    // valid pattern and is not blacklisted by exclusion pattern
                    return validateCondition((AttributeCondition)condition, policy.getRegularExpression("cssAttributeSelector"), policy.getRegularExpression("cssAttributeExclusion"), results);

                case CssValidator.SAC_NEGATIVE_CONDITION:
                    // this is a compound condition; decompose to simple condition
                    return isValidCondition(selectorName, ((NegativeCondition)condition).getCondition(), results);

                case CssValidator.SAC_ONLY_CHILD_CONDITION:
                case CssValidator.SAC_ONLY_TYPE_CONDITION:
                    // :only-child and :only-of-type are constants
                    return true;

                case CssValidator.SAC_POSITIONAL_CONDITION:
                case CssValidator.SAC_CONTENT_CONDITION:
                case CssValidator.SAC_LANG_CONDITION:
                default:
                    results.addErrorMessage("Unknown condition for selector " + HTMLEntityEncoder.htmlEntityEncode(selectorName) + " encountered");
                    return false;
            }
        }