From 2c4946f27b559245d070a6d85ccfbea3d3051134 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 14 Feb 2016 11:40:44 +0000 Subject: Add attributes to HtmlElementNode --- .../org/zwobble/mammoth/html/HtmlElementNode.java | 31 ++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'src/main/java/org/zwobble/mammoth/html/HtmlElementNode.java') diff --git a/src/main/java/org/zwobble/mammoth/html/HtmlElementNode.java b/src/main/java/org/zwobble/mammoth/html/HtmlElementNode.java index 34de63e..d237f6b 100644 --- a/src/main/java/org/zwobble/mammoth/html/HtmlElementNode.java +++ b/src/main/java/org/zwobble/mammoth/html/HtmlElementNode.java @@ -1,22 +1,39 @@ 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 HtmlElementNode implements HtmlNode { private final String tagName; + private final Map attributes; private final List children; - public HtmlElementNode(String tagName, List children) { + public HtmlElementNode(String tagName, Map attributes, List children) { this.tagName = tagName; + this.attributes = attributes; this.children = children; } @Override public void write(StringBuilder builder) { - builder - .append("<") - .append(tagName) - .append(">"); + builder.append("<").append(tagName); + + List> sortedAttributes = orderBy(Map.Entry::getKey) + .sortedCopy(attributes.entrySet()); + + for (Map.Entry attribute : sortedAttributes) { + builder + .append(" ") + .append(attribute.getKey()) + .append("=\"") + .append(attribute.getValue()) + .append("\""); + } + + builder.append(">"); children.forEach(node -> node.write(builder)); @@ -25,4 +42,8 @@ public class HtmlElementNode implements HtmlNode { .append(tagName) .append(">"); } + + private static > Ordering orderBy(Function getKey) { + return Ordering.from((first, second) -> getKey.apply(first).compareTo(getKey.apply(second))); + } } -- cgit v1.2.3