view src/nabble/naml/dom/Attribute.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
line wrap: on
line source

package nabble.naml.dom;


public final class Attribute {
	final String spaceBeforeName;
	final String name;
	final String spaceAfterName;
	final String spaceBeforeValue;
	final Naml value;
	final char quote;

	Attribute(String spaceBeforeName,String name,String spaceAfterName,String spaceBeforeValue,Naml value,char quote) {
		this.spaceBeforeName = spaceBeforeName.intern();
		this.name = name.intern();
		this.spaceAfterName = spaceAfterName.intern();
		this.spaceBeforeValue = spaceBeforeValue.intern();
		this.value = value;
		this.quote = quote;
	}

	public String spaceBeforeName() {
		return spaceBeforeName;
	}

	public String name() {
		return name;
	}

	public String spaceAfterName() {
		return spaceAfterName;
	}

	public String spaceBeforeValue() {
		return spaceBeforeValue;
	}

	public Naml value() {
		return value;
	}

	public char quote() {
		return quote;
	}

	public String toString(String value) {
		return spaceBeforeName + name + spaceAfterName + '=' + spaceBeforeValue + quote + value + quote;
	}

	public String toString() {
		String s = value.toString();
		if( quote == '"' )
			s = s.replace('<','[').replace('>',']');
		return toString(s);
	}
/*
	@Override public boolean equals(Object obj) {
		if( !(obj instanceof Attribute) )
			return false;
		Attribute attr = (Attribute)obj;
		return attr.name.equals(name)
			&& (value==null ? attr.value==null : value.equals(attr.value));
	}

	@Override public int hashCode() {
		return name.hashCode() * 31 + value.hashCode();
	}
*/
}