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

w3c.css.selectors.attributes.AttributeBegin 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;

/**
 * AttributeBegin
* Created: Sep 1, 2005 4:26:18 PM
*/ public class AttributeBegin extends AttributeSelector { private String value; public AttributeBegin(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 (other instanceof AttributeAny) { // [lang|=fr][lang] return true; } else if (other instanceof AttributeExact) { String v = ((AttributeExact) other).getValue(); int index = v.indexOf('-'); if (index > 0) { v = v.substring(0, index); } if (!value.equals(v)) { // [lang|=fr][lang=en-US] return false; } else { // [lang|=en][lang=en-US] return true; } } else if (other instanceof AttributeOneOf) { return true; } else if (other instanceof AttributeBegin) { if (!value.equals(((AttributeBegin) other).value)) { // [lang|=fr][lang|=en] return false; } else { // [lang|=en][lang|=en] return true; } } return false; } public void applyAttribute(ApplContext ac, AttributeSelector attr) { String name = getName(); if (name.equals(attr.getName())) { // attribute exact knows how to match, delegate... if (attr instanceof AttributeExact) { ((AttributeExact) attr).applyAttribute(ac, this); } else if (attr instanceof AttributeBegin) { String val = ((AttributeBegin) attr).getValue(); // check if one start with the other or not if (!val.equals(value) && !value.startsWith(val + '-') && !val.startsWith(value + '-')) { ac.getFrame().addWarning("incompatible", new String[]{toString(), attr.toString()}); } } else if (attr instanceof AttributeStart) { String val = ((AttributeStart) attr).getValue(); if (!val.equals(value) && !value.startsWith(val) && !val.startsWith(value + '-')) { ac.getFrame().addWarning("incompatible", new String[]{toString(), attr.toString()}); } } else if (attr instanceof AttributeOneOf) { ((AttributeOneOf) attr).applyAttribute(ac, this); } } } 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