Mercurial Hosting > freedit
changeset 12:ad1604c72156
fix bbcode
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 03 Jul 2022 22:01:23 -0600 |
parents | 3ed1e3f3a53a |
children | 24668255cede |
files | src/lib/Bbcode.luan src/thread.html.luan |
diffstat | 2 files changed, 117 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/lib/Bbcode.luan Sun Jul 03 22:01:23 2022 -0600 @@ -0,0 +1,114 @@ +local Luan = require "luan:Luan.luan" +local error = Luan.error +local type = Luan.type or error() +local ipairs = Luan.ipairs or error() +local stringify = Luan.stringify or error() +local Parsers = require "luan:Parsers.luan" +local bbcode_parse = Parsers.bbcode_parse or error() +local Html = require "luan:Html.luan" +local html_encode = Html.encode or error() +local Table = require "luan:Table.luan" +local is_list = Table.is_list or error() +local User = require "site:/lib/User.luan" +local Logging = require "luan:logging/Logging.luan" +local logger = Logging.logger "Bbcode" + + +local Bbcode = {} + +local to_html +local html = {} + +function html.b(bbcode) + %><b><% to_html(bbcode.contents) %></b><% +end + +function html.i(bbcode) + %><i><% to_html(bbcode.contents) %></i><% +end + +function html.u(bbcode) + %><u><% to_html(bbcode.contents) %></u><% +end + +function html.url(bbcode) + local url = bbcode.param + if url == nil then + url = html_encode(bbcode.contents) + %><a href="<%=url%>"><%=url%></a><% + else + url = html_encode(url) + %><a href="<%=url%>"><% to_html(bbcode.contents) %></a><% + end +end + +function html.code(bbcode) + %><code><%= html_encode(bbcode.contents) %></code><% +end + +function html.img(bbcode) + %><img src="<%= html_encode(bbcode.contents) %>"><% +end + +function html.color(bbcode) + %><span style="color:<%=bbcode.param%>"><% to_html(bbcode.contents) %></span><% +end + +function html.size(bbcode) + %><span style="font-size:<%=bbcode.param%>%"><% to_html(bbcode.contents) %></span><% +end + +function html.quote(bbcode) + %><blockquote><% + local user_name = bbcode.param + if user_name ~= nil then + local user = User.get_by_name(user_name) + if user == nil then + %><%= user_name %> wrote:<% + else + %><a href="/user_something"><%= user_name %></a> wrote:<% + end + end + to_html(bbcode.contents) + %></blockquote><% +end + +function html.video(bbcode) + local url = html_encode(bbcode.contents) + local site = bbcode.site + if site == "youtube" then + %><iframe width="420" height="315" src="https://www.youtube.com/embed/<%=bbcode.id%><% + local start = bbcode.start + if start ~= nil then + %>?start=<%=start%><% + end + %>" frameborder="0" allowfullscreen></iframe><% + elseif site == "bitchute" then + %><iframe width="420" height="315" scrolling="no" frameborder="0" style="border: none;" src="https://www.bitchute.com/embed/<%=bbcode.id%>/"></iframe><% + else + %><a href="<%=url%>"><%=url%></a><% + end +end + +function to_html(bbcode) + if type(bbcode) == "string" then + %><%= html_encode(bbcode) %><% + else + type(bbcode) == "table" or error() + if is_list(bbcode) then + for _, v in ipairs(bbcode) do + to_html(v) + end + else + local fn = html[bbcode.name] or error(bbcode.name.." not handled") + fn(bbcode) + end + end +end + +function Bbcode.to_html(bbcode) + bbcode = bbcode_parse(bbcode) + %><div post><% to_html(bbcode) %></div><% +end + +return Bbcode
--- a/src/thread.html.luan Thu Jun 30 20:05:11 2022 -0600 +++ b/src/thread.html.luan Sun Jul 03 22:01:23 2022 -0600 @@ -1,12 +1,7 @@ local Luan = require "luan:Luan.luan" local error = Luan.error local ipairs = Luan.ipairs or error() -local Html = require "luan:Html.luan" -local html_encode = Html.encode or error() -local Parsers = require "luan:Parsers.luan" -local bbcode_to_html = Parsers.bbcode_to_html or error() local Io = require "luan:Io.luan" -local output_of = Io.output_of or error() local Http = require "luan:http/Http.luan" local Shared = require "site:/lib/Shared.luan" local head = Shared.head or error() @@ -16,24 +11,9 @@ local forum_title = Forum.title or error() local Db = require "site:/lib/Db.luan" local Post = require "site:/lib/Post.luan" -local User = require "site:/lib/User.luan" - +local Bbcode = require "site:/lib/Bbcode.luan" +local bbcode_to_html = Bbcode.to_html or error() -local function quoter(content,user_name) - return output_of( function() - %><blockquote><% - if user_name ~= nil then - local user = User.get_by_name(user_name) - if user == nil then - %><%= html_encode(user_name) %> wrote:<% - else - %><a href="/user_somthing"><%= html_encode(user_name) %></a> wrote:<% - end - end - %><%= content %><% - %></blockquote><% - end_function ) -end return function() local root_id = Http.request.parameters.root or error() @@ -59,7 +39,7 @@ <h1><%=subject_html%></h1> <% for _, post in ipairs(posts) do %> <hr> - <div post><%=bbcode_to_html(post.content,quoter)%></div> + <% bbcode_to_html(post.content) %> <p> <a href="/reply.html?parent=<%=post.id%>">reply</a> - <a href="/edit.html?post=<%=post.id%>">edit</a>