changeset 777:1460d297e960

add bbcode to blog example
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 26 Aug 2016 15:42:15 -0600
parents 815c119dac7a
children 305ffb00ebc1
files blog/src/edit.luan blog/src/index.html.luan blog/src/new.luan src/luan/modules/http/LuanHandler.java src/luan/modules/parsers/BBCode.java
diffstat 5 files changed, 11 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/blog/src/edit.luan	Fri Aug 26 14:39:18 2016 -0600
+++ b/blog/src/edit.luan	Fri Aug 26 15:42:15 2016 -0600
@@ -31,7 +31,7 @@
 
 		<form method=post>
 			<p>Subject: <input name=subject size=50 type=text value="<%= post.subject %>"></p>
-			<p><textarea name=content rows=20 cols=90><%= post.content %></textarea></p>
+			<p><textarea name=content rows=20 cols=90><%= post.content %></textarea><br>bbcode works</p>
 			<p>
 				<input type=submit name=save value=Submit>
 			</p>
--- a/blog/src/index.html.luan	Fri Aug 26 14:39:18 2016 -0600
+++ b/blog/src/index.html.luan	Fri Aug 26 15:42:15 2016 -0600
@@ -3,6 +3,10 @@
 local ipairs = Luan.ipairs or error()
 local Time = require "luan:Time.luan"
 local Io = require "luan:Io.luan"
+local Parsers = require "luan:Parsers.luan"
+local bbcode_to_html = Parsers.bbcode_to_html or error()
+local Html = require "luan:Html.luan"
+local html_encode = Html.encode or error()
 local Http = require "luan:http/Http.luan"
 local Post = require "site:/lib/Post.luan"
 
@@ -35,7 +39,7 @@
 			<a name="p<%= post.id %>">
 			<h2><%= post.subject %></h2>
 			<p><%= Time.format(post.date) %> - <a href="edit?post=<%= post.id %>">Edit</a></p>
-			<pre><%= post.content %></pre>
+			<pre><%= bbcode_to_html(html_encode(post.content)) %></pre>
 			<hr>
 			<%
 		end
--- a/blog/src/new.luan	Fri Aug 26 14:39:18 2016 -0600
+++ b/blog/src/new.luan	Fri Aug 26 15:42:15 2016 -0600
@@ -28,7 +28,7 @@
 
 		<form method=post>
 			<p>Subject: <input name=subject size=50 type=text></p>
-			<p><textarea name=content rows=20 cols=90></textarea></p>
+			<p><textarea name=content rows=20 cols=90></textarea><br>bbcode works</p>
 			<p>
 				<input type=submit name=save value=Submit>
 			</p>
--- a/src/luan/modules/http/LuanHandler.java	Fri Aug 26 14:39:18 2016 -0600
+++ b/src/luan/modules/http/LuanHandler.java	Fri Aug 26 15:42:15 2016 -0600
@@ -38,6 +38,7 @@
 			if( !HttpServicer.service(luan,request,response,"site:"+target+".luan") )
 				return;
 		} catch(LuanException e) {
+//e.printStackTrace();
 			String err = e.getFullMessage();
 			logger.error(err);
 			response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,err);
--- a/src/luan/modules/parsers/BBCode.java	Fri Aug 26 14:39:18 2016 -0600
+++ b/src/luan/modules/parsers/BBCode.java	Fri Aug 26 15:42:15 2016 -0600
@@ -26,7 +26,7 @@
 
 	private BBCode(LuanState luan,String text,LuanFunction quoter,boolean toHtml) throws LuanException {
 		Utils.checkNotNull(text,1);
-		Utils.checkNotNull(quoter,2);
+//		Utils.checkNotNull(quoter,2);
 		this.luan = luan;
 		this.parser = new Parser(text);
 		this.quoter = quoter;
@@ -264,6 +264,8 @@
 	}
 
 	private String quote(Object... args) throws LuanException {
+		if( quoter==null )
+			throw new LuanException("BBCode quoter function not defined");
 		Object obj = quoter.call(luan,args);
 		if( !(obj instanceof String) )
 			throw new LuanException("BBCode quoter function returned "+Luan.type(obj)+" but string required");