package org.webpieces.templating.impl.tags;
import java.io.PrintWriter;
import java.util.Map;
import org.webpieces.templating.api.HtmlTag;
import org.webpieces.templating.impl.GroovyTemplateSuperclass;
import groovy.lang.Closure;
public class JsActionTag implements HtmlTag {
@Override
public void runTag(Map<Object, Object> args, Closure<?> body, PrintWriter out, GroovyTemplateSuperclass template, String srcLocation) {
Object url = args.get("defaultArgument");
if(url == null)
throw new IllegalArgumentException("#{jsAction/}# tag must contain an default argument like #{jsAction @ROUTE[:]@}#. "+srcLocation);
String html = "";
html += "function(options) {\n";
html += " var pattern = '" + url.toString().replace("&", "&") + "';\n";
html += " for(key in options) {\n";
html += " var val = options[key];\n";
html += " var nextVal = (val===undefined || val===null) ? '' : val\n";
//NOTE: URL is encoded like so /ajax/user/confirmdelete/%7Bid%7D where %7B=={ and %7D==}
html += " pattern = pattern.replace('%7B'+key+'%7D', nextVal);\n";
html += " }\n";
html += " return pattern;\n";
html += "}\n";
out.println(html);
}
@Override
public String getName() {
return "jsAction";
}
}