Mercurial Hosting > nabble
view src/nabble/naml/dom/Element.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; import java.util.Map; import java.util.Collection; import java.util.HashMap; import java.util.LinkedHashMap; public abstract class Element { final ElementName name; final Map<String,Attribute> attrMap = new LinkedHashMap<String,Attribute>(); final String spaceAtEndOfOpeningTag; final int lineNumber; public Element(ElementName name,Iterable<Attribute> attributes,String spaceAtEndOfOpeningTag,int lineNumber) { this.name = name; for( Attribute attr : attributes ) { attrMap.put(attr.name,attr); } this.spaceAtEndOfOpeningTag = spaceAtEndOfOpeningTag.intern(); this.lineNumber = lineNumber; } public final ElementName name() { return name; } public final Collection<Attribute> attributes() { return attrMap.values(); } public final Attribute getAttribute(String name) { return attrMap.get(name); } public final Map<String,Attribute> attributeMap() { return new HashMap<String,Attribute>(attrMap); } public final String spaceAtEndOfOpeningTag() { return spaceAtEndOfOpeningTag; } public final int lineNumber() { return lineNumber; } final void addStartTag(StringBuilder buf) { buf.append( '<' ); buf.append( name ); for( Attribute attr : attributes() ) { buf.append( attr ); } buf.append( spaceAtEndOfOpeningTag ); } public abstract String openingTag(); }