package fitnesse.reporting;
import fitnesse.html.HtmlElement;
import fitnesse.html.HtmlTag;
public class JavascriptUtil {
private JavascriptUtil() {
}
public static String escapeHtmlForJavaScript(String html) {
html = html.replaceAll("\\\\", "\\\\\\\\"); // backslash
html = html.replaceAll("\"", "\\\\\""); // quote
html = html.replaceAll("\t", "\\\\t"); // tab
html = html.replaceAll("\n", "\\\\n"); // newline
html = html.replaceAll("\r", "\\\\r"); // line feed
html = html.replaceAll(HtmlElement.endl, "\\\\n");
return html;
}
public static HtmlTag makeAppendElementScript(String idElement, String htmlToAppend) {
HtmlTag scriptTag = new HtmlTag("script");
String escapedIdElement = escapeHtmlForJavaScript(idElement);
String getElement = "document.getElementById(\"" + escapedIdElement + "\")";
String escapedHtml = escapeHtmlForJavaScript(htmlToAppend);
String script = "var existingContent = " + getElement + ".innerHTML;" +
HtmlTag.endl +
getElement + ".innerHTML = existingContent + \"" + escapedHtml + "\";" +
HtmlTag.endl;
scriptTag.add(script);
return scriptTag;
}
public static HtmlTag makeReplaceElementScript(String idElement, String newHtmlForElement) {
HtmlTag scriptTag = new HtmlTag("script");
String escapedIdElement = escapeHtmlForJavaScript(idElement);
String escapedHtml = escapeHtmlForJavaScript(newHtmlForElement);
scriptTag.add("document.getElementById(\"" + escapedIdElement + "\").innerHTML = \"" + escapedHtml + "\";");
return scriptTag;
}
public static HtmlTag makeInitErrorMetadataScript() {
HtmlTag scriptTag = new HtmlTag("script");
scriptTag.add("initErrorMetadata();");
return scriptTag;
}
public static HtmlTag makeSilentLink(String href, HtmlElement content) {
HtmlTag link = new HtmlTag("a");
link.addAttribute("href", "#");
link.addAttribute("onclick", "doSilentRequest('" + href + "')");
link.add(content);
return link;
}
}