@@ -28,9 +28,9 @@ public class Tag implements Cloneable {
28
28
private boolean formList = false ; // a control that appears in forms: input, textarea, output etc
29
29
private boolean formSubmit = false ; // a control that can be submitted in a form: input etc
30
30
31
- private Tag (String tagName , String namespace ) {
31
+ private Tag (String tagName , String normalName , String namespace ) {
32
32
this .tagName = tagName ;
33
- normalName = Normalizer . lowerCase ( tagName ) ;
33
+ this . normalName = normalName ;
34
34
this .namespace = namespace ;
35
35
}
36
36
@@ -67,15 +67,20 @@ public String namespace() {
67
67
* @return The tag, either defined or new generic.
68
68
*/
69
69
public static Tag valueOf (String tagName , String namespace , ParseSettings settings ) {
70
+ return valueOf (tagName , ParseSettings .normalName (tagName ), namespace , settings );
71
+ }
72
+
73
+ /** Tag.valueOf with the normalName via the token.normalName, to save redundant lower-casing passes. */
74
+ static Tag valueOf (String tagName , String normalName , String namespace , ParseSettings settings ) {
75
+ Validate .notNull (tagName );
76
+ tagName = tagName .trim ();
70
77
Validate .notEmpty (tagName );
71
78
Validate .notNull (namespace );
72
79
Tag tag = Tags .get (tagName );
73
80
if (tag != null && tag .namespace .equals (namespace ))
74
81
return tag ;
75
82
76
- tagName = settings .normalizeTag (tagName ); // the name we'll use
77
- Validate .notEmpty (tagName );
78
- String normalName = Normalizer .lowerCase (tagName ); // the lower-case name to get tag settings off
83
+ tagName = settings .preserveTagCase () ? tagName : normalName ;
79
84
tag = Tags .get (normalName );
80
85
if (tag != null && tag .namespace .equals (namespace )) {
81
86
if (settings .preserveTagCase () && !tagName .equals (normalName )) {
@@ -86,12 +91,13 @@ public static Tag valueOf(String tagName, String namespace, ParseSettings settin
86
91
}
87
92
88
93
// not defined: create default; go anywhere, do anything! (incl be inside a <p>)
89
- tag = new Tag (tagName , namespace );
94
+ tag = new Tag (tagName , normalName , namespace );
90
95
tag .isBlock = false ;
91
96
92
97
return tag ;
93
98
}
94
99
100
+
95
101
/**
96
102
* Get a Tag by name. If not previously defined (unknown), returns a new generic tag, that can do anything.
97
103
* <p>
@@ -304,7 +310,7 @@ private static void setupTags(String[] tagNames, Consumer<Tag> tagModifier) {
304
310
for (String tagName : tagNames ) {
305
311
Tag tag = Tags .get (tagName );
306
312
if (tag == null ) {
307
- tag = new Tag (tagName , Parser .NamespaceHtml );
313
+ tag = new Tag (tagName , tagName , Parser .NamespaceHtml );
308
314
Tags .put (tag .tagName , tag );
309
315
}
310
316
tagModifier .accept (tag );
0 commit comments