aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/html/HtmlWriter.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-14 12:43:24 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-14 12:43:24 +0000
commit22b699c4351a3eadc92b3ffb690b64a7ab903f1f (patch)
treefda1945f9b0df68c55d66485effbc57bbe059d39 /src/main/java/org/zwobble/mammoth/html/HtmlWriter.java
parent0889d26717379eaccc8a3d76df7d12144376e2c2 (diff)
Add attributes to self closing element
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/html/HtmlWriter.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/html/HtmlWriter.java26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/mammoth/html/HtmlWriter.java b/src/main/java/org/zwobble/mammoth/html/HtmlWriter.java
index fdf1e6c..4262e03 100644
--- a/src/main/java/org/zwobble/mammoth/html/HtmlWriter.java
+++ b/src/main/java/org/zwobble/mammoth/html/HtmlWriter.java
@@ -1,11 +1,35 @@
package org.zwobble.mammoth.html;
+import com.google.common.base.Function;
+import com.google.common.collect.Ordering;
+
+import java.util.List;
+import java.util.Map;
+
public class HtmlWriter {
public static String escapeText(String text) {
return text.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");
}
- public static String escapeAttributeValue(String value) {
+ private static String escapeAttributeValue(String value) {
return escapeText(value).replace("\"", "&quot;");
}
+
+ public static void generateAttributes(Map<String, String> attributes, StringBuilder builder) {
+ List<Map.Entry<String, String>> sortedAttributes = orderBy(Map.Entry<String, String>::getKey)
+ .sortedCopy(attributes.entrySet());
+
+ for (Map.Entry<String, String> attribute : sortedAttributes) {
+ builder
+ .append(" ")
+ .append(attribute.getKey())
+ .append("=\"")
+ .append(HtmlWriter.escapeAttributeValue(attribute.getValue()))
+ .append("\"");
+ }
+ }
+
+ private static <T, R extends Comparable<R>> Ordering<T> orderBy(Function<T, R> getKey) {
+ return Ordering.from((first, second) -> getKey.apply(first).compareTo(getKey.apply(second)));
+ }
}