mirror of
https://github.com/philomena-dev/philomena.git
synced 2025-02-01 03:46:44 +01:00
fix thing
This commit is contained in:
parent
79ec9426ca
commit
a32f01ae1a
1 changed files with 49 additions and 24 deletions
|
@ -40,6 +40,14 @@ defmodule Philomena.Textile.ParserMarkdown do
|
||||||
|> Enum.map_join("", fn {_k, v} -> v end)
|
|> Enum.map_join("", fn {_k, v} -> v end)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def flatten_unquote(tree) do
|
||||||
|
tree
|
||||||
|
|> List.flatten()
|
||||||
|
|> Enum.map_join("", fn {_k, v} ->
|
||||||
|
Regex.replace(~r/\n(> )/, v, "\n")
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
# Helper to turn a parse tree into a list
|
# Helper to turn a parse tree into a list
|
||||||
def partial_flatten(tree) do
|
def partial_flatten(tree) do
|
||||||
tree
|
tree
|
||||||
|
@ -473,9 +481,39 @@ defmodule Philomena.Textile.ParserMarkdown do
|
||||||
{:ok, [{:text, tok}], r_tokens}
|
{:ok, [{:text, tok}], r_tokens}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp inline_textile_element_not_opening_markup(
|
||||||
|
parser,
|
||||||
|
[{:bq_open, start} | r_tokens],
|
||||||
|
level
|
||||||
|
) do
|
||||||
|
case repeat(&block_textile_element/4, parser, r_tokens, true, level + 1) do
|
||||||
|
{:ok, tree, [{:bq_close, _} | r2_tokens], level} ->
|
||||||
|
{:ok,
|
||||||
|
[
|
||||||
|
{:markup, "\n" <> String.duplicate("> ", level)},
|
||||||
|
tree,
|
||||||
|
{:markup, "\n" <> String.duplicate("> ", level - 1)}
|
||||||
|
], r2_tokens}
|
||||||
|
|
||||||
|
{:ok, tree, r2_tokens, level} ->
|
||||||
|
{:ok,
|
||||||
|
[
|
||||||
|
{:text, start},
|
||||||
|
{:text, flatten_unquote(tree)}
|
||||||
|
], r2_tokens}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp inline_textile_element_not_opening_markup(
|
||||||
|
_parser,
|
||||||
|
[{:bq_open, tok} | r_tokens],
|
||||||
|
level
|
||||||
|
) do
|
||||||
|
{:ok, [{:text, tok}], r_tokens}
|
||||||
|
end
|
||||||
|
|
||||||
defp inline_textile_element_not_opening_markup(parser, tokens, level) do
|
defp inline_textile_element_not_opening_markup(parser, tokens, level) do
|
||||||
[
|
[
|
||||||
{:bq_open, :bq_close, "> ", "> "},
|
|
||||||
{:spoiler_open, :spoiler_close, "||", "||"},
|
{:spoiler_open, :spoiler_close, "||", "||"},
|
||||||
{:bracketed_b_open, :bracketed_b_close, "**", "**"},
|
{:bracketed_b_open, :bracketed_b_close, "**", "**"},
|
||||||
{:bracketed_i_open, :bracketed_i_close, "_", "_"},
|
{:bracketed_i_open, :bracketed_i_close, "_", "_"},
|
||||||
|
@ -488,18 +526,6 @@ defmodule Philomena.Textile.ParserMarkdown do
|
||||||
{:bracketed_sub_open, :bracketed_sub_close, "%", "%"}
|
{:bracketed_sub_open, :bracketed_sub_close, "%", "%"}
|
||||||
]
|
]
|
||||||
|> Enum.find_value(fn {open_token, close_token, open_tag, close_tag} ->
|
|> Enum.find_value(fn {open_token, close_token, open_tag, close_tag} ->
|
||||||
if open_token == :bq_open do
|
|
||||||
simple_recursive(
|
|
||||||
open_token,
|
|
||||||
close_token,
|
|
||||||
open_tag,
|
|
||||||
close_tag,
|
|
||||||
&block_textile_element/4,
|
|
||||||
parser,
|
|
||||||
tokens,
|
|
||||||
level + 1
|
|
||||||
)
|
|
||||||
else
|
|
||||||
simple_recursive(
|
simple_recursive(
|
||||||
open_token,
|
open_token,
|
||||||
close_token,
|
close_token,
|
||||||
|
@ -510,7 +536,6 @@ defmodule Philomena.Textile.ParserMarkdown do
|
||||||
tokens,
|
tokens,
|
||||||
level
|
level
|
||||||
)
|
)
|
||||||
end
|
|
||||||
|> case do
|
|> case do
|
||||||
{:ok, tree, r_tokens} ->
|
{:ok, tree, r_tokens} ->
|
||||||
{:ok, tree, r_tokens}
|
{:ok, tree, r_tokens}
|
||||||
|
|
Loading…
Reference in a new issue