view src/nabble/view/web/template/HtmlNamespace.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
line wrap: on
line source

package nabble.view.web.template;

import fschmidt.util.java.ObjectUtils;
import nabble.view.lib.Recaptcha;
import nabble.naml.compiler.Command;
import nabble.naml.compiler.CommandSpec;
import nabble.naml.compiler.Encoder;
import nabble.naml.compiler.IPrintWriter;
import nabble.naml.compiler.Interpreter;
import nabble.naml.compiler.Namespace;
import nabble.naml.compiler.ScopedInterpreter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.LinkedHashSet;
import java.util.Set;


@Namespace (
	name = "html",
	global = true
)
public final class HtmlNamespace {
	private static final Logger logger = LoggerFactory.getLogger(HtmlNamespace.class);

	private final Set<String> headSet = new LinkedHashSet<String>();
	private final String body;

	HtmlNamespace(ScopedInterpreter<HtmlNamespace> interp) {
		interp.setEncoder(Encoder.HTML);
		this.body = interp.getArgString(this,"do");
	}

	@Command public void html_head_content(IPrintWriter out,Interpreter interp) {
		String head = ObjectUtils.join(headSet);
		out.print(head);
	}

	@Command public void html_body_content(IPrintWriter out,Interpreter interp) {
		out.print(body);
	}

	public static final CommandSpec put_in_head = CommandSpec.NO_OUTPUT()
		.dotParameter("in_head")
		.build()
	;

	@Command public void put_in_head(IPrintWriter out,Interpreter interp) {
		String s = interp.getArgString("in_head");
		if( s == null )
			throw new NullPointerException();
		headSet.add(s);
	}

	public static final CommandSpec style = new CommandSpec.Builder()
		.parameters("property")
		.dotParameter("value")
		.optionalParameters("value")
		.build()
	;

	@Command public static void style(IPrintWriter out,Interpreter interp) {
		String property = interp.getArgString("property");
		String value = interp.getArgString("value");
		if( value != null ) {
			out.print( property + ':' + value );
		}
	}

	public static final CommandSpec calendar = CalendarWidget._calendar;

	@Command public void calendar(IPrintWriter out,Interpreter interp) {
		CalendarWidget._calendar(out, interp);
	}

	@Command public void page_template(IPrintWriter out,Interpreter interp) {
		out.print(interp.template().name());
	}

	@Command public void page_template_command_id(IPrintWriter out,Interpreter interp) {
		out.print(interp.template().macro.getId());
	}

	@Command public void page_base_classes(IPrintWriter out,Interpreter interp) {
		out.print(ServletNamespace.class.getName());
	}

	@Command public void captcha_div(IPrintWriter out, Interpreter interp) {
		headSet.add( Recaptcha.JS );
		out.print( Recaptcha.DIV );
	}


}