mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-12-23 00:26:30 +00:00
Merge branch 'feature/bbcode' into 'develop'
BBCode support (backend) See merge request pleroma/pleroma!1097
This commit is contained in:
commit
002ea343f8
5 changed files with 41 additions and 1 deletions
|
@ -221,7 +221,8 @@ config :pleroma, :instance,
|
||||||
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 @@ defmodule Pleroma.Web.CommonAPI.Utils 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.
|
||||||
"""
|
"""
|
||||||
|
|
1
mix.exs
1
mix.exs
|
@ -84,6 +84,7 @@ defmodule Pleroma.Mixfile do
|
||||||
{:ex_aws, "~> 2.0"},
|
{:ex_aws, "~> 2.0"},
|
||||||
{:ex_aws_s3, "~> 2.0"},
|
{:ex_aws_s3, "~> 2.0"},
|
||||||
{:earmark, "~> 1.3"},
|
{:earmark, "~> 1.3"},
|
||||||
|
{:bbcode, "~> 0.1"},
|
||||||
{:ex_machina, "~> 2.3", only: :test},
|
{:ex_machina, "~> 2.3", only: :test},
|
||||||
{:credo, "~> 0.9.3", only: [:dev, :test]},
|
{:credo, "~> 0.9.3", only: [:dev, :test]},
|
||||||
{:mock, "~> 0.3.1", only: :test},
|
{:mock, "~> 0.3.1", only: :test},
|
||||||
|
|
1
mix.lock
1
mix.lock
|
@ -2,6 +2,7 @@
|
||||||
"accept": {:hex, :accept, "0.3.5", "b33b127abca7cc948bbe6caa4c263369abf1347cfa9d8e699c6d214660f10cd1", [:rebar3], [], "hexpm"},
|
"accept": {:hex, :accept, "0.3.5", "b33b127abca7cc948bbe6caa4c263369abf1347cfa9d8e699c6d214660f10cd1", [:rebar3], [], "hexpm"},
|
||||||
"auto_linker": {:git, "https://git.pleroma.social/pleroma/auto_linker.git", "90613b4bae875a3610c275b7056b61ffdd53210d", [ref: "90613b4bae875a3610c275b7056b61ffdd53210d"]},
|
"auto_linker": {:git, "https://git.pleroma.social/pleroma/auto_linker.git", "90613b4bae875a3610c275b7056b61ffdd53210d", [ref: "90613b4bae875a3610c275b7056b61ffdd53210d"]},
|
||||||
"base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm"},
|
"base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm"},
|
||||||
|
"bbcode": {:hex, :bbcode, "0.1.0", "400e618b640b635261611d7fb7f79d104917fc5b084aae371ab6b08477cb035b", [:mix], [{:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm"},
|
"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm"},
|
||||||
"cachex": {:hex, :cachex, "3.0.2", "1351caa4e26e29f7d7ec1d29b53d6013f0447630bbf382b4fb5d5bad0209f203", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm"},
|
"cachex": {:hex, :cachex, "3.0.2", "1351caa4e26e29f7d7ec1d29b53d6013f0447630bbf382b4fb5d5bad0209f203", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"calendar": {:hex, :calendar, "0.17.4", "22c5e8d98a4db9494396e5727108dffb820ee0d18fed4b0aa8ab76e4f5bc32f1", [:mix], [{:tzdata, "~> 0.5.8 or ~> 0.1.201603", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"},
|
"calendar": {:hex, :calendar, "0.17.4", "22c5e8d98a4db9494396e5727108dffb820ee0d18fed4b0aa8ab76e4f5bc32f1", [:mix], [{:tzdata, "~> 0.5.8 or ~> 0.1.201603", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
|
|
|
@ -119,6 +119,31 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest 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>\n<br>\nsecond paragraph!"
|
||||||
|
|
||||||
|
{output, [], []} = Utils.format_input(text, "text/bbcode")
|
||||||
|
|
||||||
|
assert output == expected
|
||||||
|
|
||||||
|
text = "[b]hello world![/b]\n\n<strong>second paragraph!</strong>"
|
||||||
|
|
||||||
|
expected =
|
||||||
|
"<strong>hello world!</strong><br>\n<br>\n<strong>second paragraph!</strong>"
|
||||||
|
|
||||||
|
{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"})
|
||||||
|
|
Loading…
Reference in a new issue