package org.zwobble.mammoth.internal.styles; import org.zwobble.mammoth.internal.html.HtmlElement; import org.zwobble.mammoth.internal.html.HtmlNode; import java.util.List; import java.util.Map; import java.util.function.Supplier; import static org.zwobble.mammoth.internal.util.Lists.list; import static org.zwobble.mammoth.internal.util.Maps.map; public class HtmlPathElement { public static HtmlPathElement fresh(String tagName) { return new HtmlPathElement(list(tagName), map(), false); } public static HtmlPathElement collapsible(String tagName) { return collapsible(tagName, map()); } public static HtmlPathElement collapsible(String tagName, Map attributes) { return new HtmlPathElement(list(tagName), attributes, true); } private final List tagNames; private final Map attributes; private final boolean isCollapsible; public HtmlPathElement(List tagNames, Map attributes, boolean isCollapsible) { this.tagNames = tagNames; this.attributes = attributes; this.isCollapsible = isCollapsible; } public Supplier> wrap(Supplier> generateNodes) { return () -> wrapNodes(generateNodes.get()); } private List wrapNodes(List nodes) { return list(new HtmlElement(tagNames, attributes, nodes, isCollapsible)); } }