package org.wicketstuff.htmlvalidator;
import java.util.Collection;
import java.util.TreeSet;
import org.apache.wicket.util.string.Strings;
class Tag {
private Collection<Attribute> attributes;
private final String name;
private CharSequence body;
Tag(String name) {
this.name = name;
this.attributes = new TreeSet<Attribute>();
}
public Tag setBody(CharSequence body) {
this.body = body;
return this;
}
@Override
public String toString() {
if ("img|link".contains(name))
return getOpenCloseTag();
if (Strings.isEmpty(body))
return getOpenTag() + getCloseTag();
return getOpenTag() + body + getCloseTag();
}
public String getName() {
return name;
}
public Tag attr(String name, CharSequence... values) {
this.attributes.add(new Attribute(name, values));
return this;
}
public String getOpenCloseTag() {
StringBuilder sb = new StringBuilder();
sb.append("<");
sb.append(name);
if (!attributes.isEmpty()) {
for (Attribute attribute : attributes) {
sb.append(" ");
sb.append(attribute);
}
}
sb.append(" />");
return sb.toString();
}
public String getOpenTag() {
StringBuilder sb = new StringBuilder();
sb.append("<");
sb.append(name);
if (!attributes.isEmpty()) {
for (Attribute attribute : attributes) {
sb.append(" ");
sb.append(attribute);
}
}
sb.append(">");
return sb.toString();
}
public String getCloseTag() {
StringBuilder sb = new StringBuilder();
sb.append("</");
sb.append(name);
sb.append(">");
return sb.toString();
}
}