Commit 501af917 authored by kaniini's avatar kaniini
Browse files

add support for bbcode

parent 2bd880be
...@@ -221,7 +221,8 @@ ...@@ -221,7 +221,8 @@
allowed_post_formats: [ allowed_post_formats: [
"text/plain", "text/plain",
"text/html", "text/html",
"text/markdown" "text/markdown",
"text/bbcode"
], ],
mrf_transparency: true, mrf_transparency: true,
autofollowed_nicknames: [], autofollowed_nicknames: [],
......
...@@ -182,6 +182,18 @@ def format_input(text, "text/plain", options) do ...@@ -182,6 +182,18 @@ def format_input(text, "text/plain", options) do
end).() end).()
end end
@doc """
Formatting text as BBCode.
"""
def format_input(text, "text/bbcode", options) do
text
|> String.replace(~r/\r/, "")
|> Formatter.html_escape("text/plain")
|> BBCode.to_html()
|> (fn {:ok, html} -> html end).()
|> Formatter.linkify(options)
end
@doc """ @doc """
Formatting text to html. Formatting text to html.
""" """
......
...@@ -119,6 +119,22 @@ test "works for bare text/markdown" do ...@@ -119,6 +119,22 @@ test "works for bare text/markdown" do
assert output == expected assert output == expected
end end
test "works for bare text/bbcode" do
text = "[b]hello world[/b]"
expected = "<strong>hello world</strong>"
{output, [], []} = Utils.format_input(text, "text/bbcode")
assert output == expected
text = "[b]hello world![/b]\n\nsecond paragraph!"
expected = "<strong>hello world!</strong><br><br>second paragraph!"
{output, [], []} = Utils.format_input(text, "text/bbcode")
assert output == expected
end
test "works for text/markdown with mentions" do test "works for text/markdown with mentions" do
{:ok, user} = {:ok, user} =
UserBuilder.insert(%{nickname: "user__test", ap_id: "http://foo.com/user__test"}) UserBuilder.insert(%{nickname: "user__test", ap_id: "http://foo.com/user__test"})
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment