Mercurial Hosting > nabble
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:7ecd1a4ef557 |
---|---|
1 package nabble.naml.dom; | |
2 | |
3 import java.util.Map; | |
4 import java.util.Collection; | |
5 import java.util.HashMap; | |
6 import java.util.LinkedHashMap; | |
7 | |
8 | |
9 public abstract class Element { | |
10 final ElementName name; | |
11 final Map<String,Attribute> attrMap = new LinkedHashMap<String,Attribute>(); | |
12 final String spaceAtEndOfOpeningTag; | |
13 final int lineNumber; | |
14 | |
15 public Element(ElementName name,Iterable<Attribute> attributes,String spaceAtEndOfOpeningTag,int lineNumber) { | |
16 this.name = name; | |
17 for( Attribute attr : attributes ) { | |
18 attrMap.put(attr.name,attr); | |
19 } | |
20 this.spaceAtEndOfOpeningTag = spaceAtEndOfOpeningTag.intern(); | |
21 this.lineNumber = lineNumber; | |
22 } | |
23 | |
24 public final ElementName name() { | |
25 return name; | |
26 } | |
27 | |
28 public final Collection<Attribute> attributes() { | |
29 return attrMap.values(); | |
30 } | |
31 | |
32 public final Attribute getAttribute(String name) { | |
33 return attrMap.get(name); | |
34 } | |
35 | |
36 public final Map<String,Attribute> attributeMap() { | |
37 return new HashMap<String,Attribute>(attrMap); | |
38 } | |
39 | |
40 public final String spaceAtEndOfOpeningTag() { | |
41 return spaceAtEndOfOpeningTag; | |
42 } | |
43 | |
44 public final int lineNumber() { | |
45 return lineNumber; | |
46 } | |
47 | |
48 final void addStartTag(StringBuilder buf) { | |
49 buf.append( '<' ); | |
50 buf.append( name ); | |
51 for( Attribute attr : attributes() ) { | |
52 buf.append( attr ); | |
53 } | |
54 buf.append( spaceAtEndOfOpeningTag ); | |
55 } | |
56 | |
57 public abstract String openingTag(); | |
58 | |
59 } |