Mercurial Hosting > nabble
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/nabble/view/web/template/MessageNamespace.java Thu Mar 21 19:15:52 2019 -0600 @@ -0,0 +1,114 @@ +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() ); + } + } + +}