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)
|
||||
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
|
||||
def partial_flatten(tree) do
|
||||
tree
|
||||
|
@ -473,9 +481,39 @@ defmodule Philomena.Textile.ParserMarkdown do
|
|||
{:ok, [{:text, tok}], r_tokens}
|
||||
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
|
||||
[
|
||||
{:bq_open, :bq_close, "> ", "> "},
|
||||
{:spoiler_open, :spoiler_close, "||", "||"},
|
||||
{:bracketed_b_open, :bracketed_b_close, "**", "**"},
|
||||
{:bracketed_i_open, :bracketed_i_close, "_", "_"},
|
||||
|
@ -488,18 +526,6 @@ defmodule Philomena.Textile.ParserMarkdown do
|
|||
{:bracketed_sub_open, :bracketed_sub_close, "%", "%"}
|
||||
]
|
||||
|> 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(
|
||||
open_token,
|
||||
close_token,
|
||||
|
@ -510,7 +536,6 @@ defmodule Philomena.Textile.ParserMarkdown do
|
|||
tokens,
|
||||
level
|
||||
)
|
||||
end
|
||||
|> case do
|
||||
{:ok, tree, r_tokens} ->
|
||||
{:ok, tree, r_tokens}
|
||||
|
|
Loading…
Reference in a new issue