/// <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); } }
/// <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; } }