mirror of
https://github.com/philomena-dev/philomena.git
synced 2025-02-17 11:04:22 +01:00
minor refactoring
This commit is contained in:
parent
27ebe0887d
commit
0ed5c127f9
2 changed files with 17 additions and 18 deletions
|
@ -1,6 +1,5 @@
|
||||||
defmodule Textile.Parser do
|
defmodule Textile.Parser do
|
||||||
import Textile.ParserHelpers
|
import Textile.ParserHelpers
|
||||||
import Phoenix.HTML
|
|
||||||
|
|
||||||
alias Textile.{
|
alias Textile.{
|
||||||
Lexer,
|
Lexer,
|
||||||
|
@ -9,7 +8,6 @@ defmodule Textile.Parser do
|
||||||
}
|
}
|
||||||
|
|
||||||
defstruct [
|
defstruct [
|
||||||
reductions: [],
|
|
||||||
image_transform: nil
|
image_transform: nil
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -129,7 +127,7 @@ defmodule Textile.Parser do
|
||||||
{:ok, [markup: ~s|<blockquote author="#{escape_html(author)}">|] ++ tree ++ [markup: ~s|</blockquote>|], r2_tokens}
|
{:ok, [markup: ~s|<blockquote author="#{escape_html(author)}">|] ++ tree ++ [markup: ~s|</blockquote>|], r2_tokens}
|
||||||
else
|
else
|
||||||
_ ->
|
_ ->
|
||||||
{:ok, [text: ~s|[bq="#{author}"]|], r_tokens}
|
{:ok, [text: escape_nl2br(~s|[bq="#{author}"]|)], r_tokens}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -138,7 +136,7 @@ defmodule Textile.Parser do
|
||||||
{:ok, [markup: ~s|<blockquote>|] ++ tree ++ [markup: ~s|</blockquote>|], r2_tokens}
|
{:ok, [markup: ~s|<blockquote>|] ++ tree ++ [markup: ~s|</blockquote>|], r2_tokens}
|
||||||
else
|
else
|
||||||
_ ->
|
_ ->
|
||||||
{:ok, [text: escape_html(open)], r_tokens}
|
{:ok, [text: escape_nl2br(open)], r_tokens}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -155,7 +153,7 @@ defmodule Textile.Parser do
|
||||||
{:ok, [markup: ~s|<span class="spoiler">|] ++ tree ++ [markup: ~s|</span>|], r2_tokens}
|
{:ok, [markup: ~s|<span class="spoiler">|] ++ tree ++ [markup: ~s|</span>|], r2_tokens}
|
||||||
else
|
else
|
||||||
_ ->
|
_ ->
|
||||||
{:ok, [text: escape_html(open)], r_tokens}
|
{:ok, [text: escape_nl2br(open)], r_tokens}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -172,7 +170,7 @@ defmodule Textile.Parser do
|
||||||
{:ok, [markup: ~s|<a href="#{escape_html(url)}">|] ++ tree ++ [markup: ~s|</a>|], r2_tokens}
|
{:ok, [markup: ~s|<a href="#{escape_html(url)}">|] ++ tree ++ [markup: ~s|</a>|], r2_tokens}
|
||||||
else
|
else
|
||||||
_ ->
|
_ ->
|
||||||
{:ok, [text: escape_html(start)], r_tokens}
|
{:ok, [text: escape_nl2br(start)], r_tokens}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -305,16 +303,4 @@ defmodule Textile.Parser do
|
||||||
|
|
||||||
defp text(_parser, _tokens),
|
defp text(_parser, _tokens),
|
||||||
do: {:error, "Expected text"}
|
do: {:error, "Expected text"}
|
||||||
|
|
||||||
|
|
||||||
defp escape_nl2br(text) do
|
|
||||||
text
|
|
||||||
|> String.split("\n", trim: true)
|
|
||||||
|> Enum.map(&escape_html(&1))
|
|
||||||
|> Enum.join("<br/>")
|
|
||||||
end
|
|
||||||
|
|
||||||
defp escape_html(text) do
|
|
||||||
html_escape(text) |> safe_to_string()
|
|
||||||
end
|
|
||||||
end
|
end
|
|
@ -1,4 +1,6 @@
|
||||||
defmodule Textile.ParserHelpers do
|
defmodule Textile.ParserHelpers do
|
||||||
|
import Phoenix.HTML
|
||||||
|
|
||||||
defmacro attribute_parser(name, open_token, close_token, open_tag, close_tag) do
|
defmacro attribute_parser(name, open_token, close_token, open_tag, close_tag) do
|
||||||
quote do
|
quote do
|
||||||
defp unquote(name)(parser, [{unquote(open_token), open} | r_tokens]) do
|
defp unquote(name)(parser, [{unquote(open_token), open} | r_tokens]) do
|
||||||
|
@ -23,4 +25,15 @@ defmodule Textile.ParserHelpers do
|
||||||
do: {:error, "Expected #{unquote(name)} tag"}
|
do: {:error, "Expected #{unquote(name)} tag"}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def escape_nl2br(text) do
|
||||||
|
text
|
||||||
|
|> String.split("\n", trim: true)
|
||||||
|
|> Enum.map(&escape_html(&1))
|
||||||
|
|> Enum.join("<br/>")
|
||||||
|
end
|
||||||
|
|
||||||
|
def escape_html(text) do
|
||||||
|
html_escape(text) |> safe_to_string()
|
||||||
|
end
|
||||||
end
|
end
|
Loading…
Reference in a new issue