blob: 9d4690c9e198fb40fae0440ae7abe6b98f3b74d1 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.distiller.webdocument;
import org.chromium.distiller.DomUtil;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Node;
import com.google.gwt.dom.client.Text;
import java.util.Stack;
/**
* A simple "WebDocumentBuilder" that just creates an html-like string from the calls.
*/
public class FakeWebDocumentBuilder implements WebDocumentBuilderInterface {
private final StringBuilder documentStringBuilder;
private final Stack<Element> elements;
FakeWebDocumentBuilder() {
documentStringBuilder = new StringBuilder();
elements = new Stack<Element>();
}
String getDocumentString() {
return documentStringBuilder.toString();
}
@Override
public void dataTable(Element element) {
documentStringBuilder.append("<datatable/>");
}
@Override
public void skipElement(Element element) {}
@Override
public void startElement(Element element) {
elements.push(element);
documentStringBuilder.append("<");
documentStringBuilder.append(element.getTagName());
JsArray<Node> attributes = DomUtil.getAttributes(element);
for (int i = 0; i < attributes.length(); i++) {
Node node = attributes.get(i);
documentStringBuilder.append(" ");
documentStringBuilder.append(node.getNodeName());
documentStringBuilder.append("=\"");
documentStringBuilder.append(node.getNodeValue());
documentStringBuilder.append("\"");
}
documentStringBuilder.append(">");
}
@Override
public void endElement() {
Element el = elements.pop();
documentStringBuilder.append("</" + el.getTagName() + ">");
}
@Override
public void textNode(Text textNode) {
documentStringBuilder.append(textNode.getData());
}
@Override
public void lineBreak(Node node) {
documentStringBuilder.append("\n");
}
@Override
public void embed(WebElement embed) {}
@Override
public void tag(WebTag tag) {}
}