view src/nabble/view/web/template/MessageNamespace.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.html.Html;
import nabble.model.FileUpload;
import nabble.model.MailMessageFormat;
import nabble.model.Message;
import nabble.model.Node;
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;
import nabble.naml.compiler.ScopedInterpreter;


@Namespace (
	name = "message",
	global = false
)
public final class MessageNamespace {
	private final Message message;

	public MessageNamespace(Message message) {
		this.message = message;
	}

	@Command public void as_text(IPrintWriter out,Interpreter interp) {
		out.print( interp.encode(message.getText()) );
	}

	@Command public void as_quoted_text(IPrintWriter out,Interpreter interp) {
		boolean isMail = message.getFormat() instanceof MailMessageFormat;
		if( isMail ) {
			Html html = new Html(message.getText());
			MailMessageFormat.tagEmails(html,(Node)message.getSource());
			out.print(html);
		} else {
			Html html = new Html(message.getRaw());
			FileUpload.processFileTags(html,message.getSource());
			out.print(html);
		}
	}

	@Command public void as_text_without_quotes(IPrintWriter out,Interpreter interp) {
		out.print( interp.encode(message.getTextWithoutQuotes()) );
	}

	@Command public void as_raw(IPrintWriter out,Interpreter interp) {
		out.print( message.getRaw() );
	}

	@Command public void as_editable(IPrintWriter out,Interpreter interp) {
		boolean isMail = message.getFormat() instanceof MailMessageFormat;
		out.print( isMail ? message.getText() : message.getRaw() );
	}

	@Command public void is_imported_mail(IPrintWriter out,Interpreter interp) {
		out.print( message.getFormat().isMail() );
	}

	@Command public void is_html_format(IPrintWriter out,Interpreter interp) {
		out.print( message.getFormat() == Message.Format.HTML );
	}

	@Command public void is_text_format(IPrintWriter out,Interpreter interp) {
		out.print( message.getFormat() == Message.Format.TEXT );
	}

	@Command public void is_deleted(IPrintWriter out,Interpreter interp) {
		out.print( message.isDeleted() );
	}

	@Command public void is_deactivated(IPrintWriter out,Interpreter interp) {
		out.print( message.isDeactivated() );
	}

	@Command public void format(IPrintWriter out,Interpreter interp) {
		String s = message.getFormat().getName();
		if( s.equals("subscription") )
			s = "mail";  // hack for now
		out.print(s);
	}


	public static final CommandSpec as_html_list = CommandSpec.DO;

	@Command public void as_html_list(IPrintWriter out,ScopedInterpreter<HtmlListNamespace> interp) {
		HtmlListNamespace html = new HtmlListNamespace( message.parse(), message.getSource(), message.getFormat());
		interp.getArgString(html,"do");
		out.print(html);
	}

	public static final CommandSpec as_raw_html_list = CommandSpec.DO;

	@Command public void as_raw_html_list(IPrintWriter out,ScopedInterpreter<HtmlListNamespace> interp) {
		HtmlListNamespace html = new HtmlListNamespace( new Html(message.getRaw()), message.getSource(), message.getFormat());
		interp.getArgString(html,"do");
		out.print(html);
	}

	public static final CommandSpec as_text_list = CommandSpec.DO;

	@Command public void as_text_list(IPrintWriter out,ScopedInterpreter<HtmlListNamespace> interp) {
		boolean isMail = message.getFormat() instanceof MailMessageFormat;
		if( isMail ) {
			out.print( message.getText() );
		} else {
			HtmlListNamespace html = new HtmlListNamespace( message.parseForMailText(), message.getSource(), message.getFormat());
			interp.getArgString(html,"do");
			out.print( html.toMailText() );
		}
	}

}