All Downloads are FREE. Search and download functionalities are using the official Maven repository.

w3c.css.selectors.attributes.AttributeExact Maven / Gradle / Ivy

There is a newer version: 1.0.8
Show newest version
// $Id$
// Author: Jean-Guilhem Rouel
// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.css.selectors.attributes;

import org.w3c.css.selectors.AttributeSelector;
import org.w3c.css.selectors.Selector;
import org.w3c.css.util.ApplContext;

/**
 * AttributeExact
* Created: Sep 1, 2005 4:22:42 PM
*/ public class AttributeExact extends AttributeSelector { private String value; public AttributeExact(String name, String value) { setName(name); this.value = value; } /** * @return Returns the value. */ public String getValue() { return value; } /** * @param value The value to set. */ public void setValue(String value) { this.value = value; } public boolean canApply(Selector other) { if (getName().equals(other.getName())) { if (other instanceof AttributeAny) { // [lang=fr][lang] return true; } else if (other instanceof AttributeExact || other instanceof AttributeOneOf || other instanceof AttributeBegin) { // FIXME sounds like canApply is not used anyway // + the comparison function is not right and doesn't // take into account all kind the selector attributes if (!value.equals(((AttributeExact) other).getValue())) { // [lang=fr][lang=en] return false; } else { // [lang=en][lang=en] return true; } } return false; } return true; } public void applyAttribute(ApplContext ac, AttributeSelector attr) { String name = getName(); // if same name... check if they are incompatible or not if (name.equals(attr.getName())) { if (attr instanceof AttributeExact) { // and not the same value, raise a warning if (!value.equals(((AttributeExact) attr).getValue())) { ac.getFrame().addWarning("incompatible", new String[]{toString(), attr.toString()}); } } else if (attr instanceof AttributeOneOf) { // delegate the match to OneOf ((AttributeOneOf) attr).applyAttribute(ac, this); } else if (attr instanceof AttributeBegin) { String othervalue = ((AttributeBegin) attr).getValue(); // check if [lang|=en][lang=fr-FR] are incompatible // form CSS3 selectors about AttributeBegin // [[ its value either being exactly "val" or beginning // with "val" immediately followed by "-" (U+002D). ]] if (!value.equals(othervalue) && !value.startsWith(othervalue + "-")) { ac.getFrame().addWarning("incompatible", new String[]{toString(), attr.toString()}); } } else if (attr instanceof AttributeSubstr) { String othervalue = ((AttributeSubstr) attr).getValue(); if (value.indexOf(othervalue) < 0) { ac.getFrame().addWarning("incompatible", new String[]{toString(), attr.toString()}); } } else if (attr instanceof AttributeStart) { String othervalue = ((AttributeStart) attr).getValue(); if (!value.startsWith(othervalue)) { ac.getFrame().addWarning("incompatible", new String[]{toString(), attr.toString()}); } } else if (attr instanceof AttributeSuffix) { String othervalue = ((AttributeSuffix) attr).getValue(); if (!value.endsWith(othervalue)) { ac.getFrame().addWarning("incompatible", new String[]{toString(), attr.toString()}); } } } } public String toString() { StringBuilder sb = new StringBuilder(); sb.append('[').append(getName()).append("=\"").append(value).append("\"]"); return sb.toString(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy