view src/nabble/view/web/template/NamlConfigurationNamespace.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 nabble.model.Site;
import nabble.naml.compiler.Command;
import nabble.naml.compiler.CommandSpec;
import nabble.naml.compiler.IPrintWriter;
import nabble.naml.compiler.Interpreter;
import nabble.naml.compiler.Namespace;


@Namespace(
	name = "naml_configuration",
	global = false
)
public class NamlConfigurationNamespace {

	public static final CommandSpec get_value = new CommandSpec.Builder()
		.parameters("name", "default")
		.build()
	;

	@Command public void get_value(IPrintWriter out, Interpreter interp) {
		Site site = NabbleNamespace.current().site();
		String name = interp.getArgString("name");
		String value = site.getConfigurationValue(name);
		if( value == null )
			value = interp.getArgString("default");
		out.print(value);
	}

	public static final CommandSpec set = new CommandSpec.Builder()
		.parameters("name", "value", "naml")
		.optionalParameters("default")
		.build()
	;

	@Command public void set(IPrintWriter out, Interpreter interp) {
		Site site = NabbleNamespace.current().site();
		String name = interp.getArgString("name");
		String value = interp.getArgString("value");
		String defaultValue = interp.getArgString("default");
		if (defaultValue != null && value.equals(defaultValue)) {
			site.deleteConfiguration(name);
		} else {
			String naml = interp.getArgString("naml");
			site.saveConfiguration(name,value,naml);
		}
		out.print(name);
	}

	@Command public void apply(IPrintWriter out, Interpreter interp) {
		Site site = NabbleNamespace.current().site();
		site.update();
	}

}