Some cleanup

This commit is contained in:
Mitchell Hanberg 2021-04-09 00:12:19 -04:00
parent b35b9b6d91
commit fe3aed5df7
11 changed files with 20 additions and 52 deletions

View file

@ -1,2 +1,2 @@
elixir 1.7.4
elixir 1.11.3
erlang 23.2.6

View file

@ -25,7 +25,7 @@ div some_var do
# something
end
# <div<%= PrivateTempleModule.runtime_attrs(some_var) %>>
# <div<%= UtilsTempleModule.runtime_attrs(some_var) %>>
# <!-- something -->
# </div>
```

View file

@ -106,9 +106,7 @@ defmodule Temple.Parser do
end
def parse(asts) when is_list(asts) do
Enum.flat_map(asts, fn ast ->
parse(ast)
end)
Enum.flat_map(asts, &parse/1)
end
def parse(ast) do

View file

@ -8,7 +8,7 @@ defmodule Temple.Parser.AnonymousFunctions do
@impl Parser
def applicable?({_, _, args}) do
import Temple.Parser.Private, only: [split_args: 1]
import Temple.Parser.Utils, only: [split_args: 1]
args
|> split_args()
@ -20,9 +20,9 @@ defmodule Temple.Parser.AnonymousFunctions do
@impl Parser
def run({_name, _, args} = expression) do
{_do_and_else, args} = Temple.Parser.Private.split_args(args)
{_do_and_else, args} = Temple.Parser.Utils.split_args(args)
{_args, func_arg, _args2} = Temple.Parser.Private.split_on_fn(args, {[], nil, []})
{_args, func_arg, _args2} = Temple.Parser.Utils.split_on_fn(args, {[], nil, []})
{_func, _, [{_arrow, _, [[{_arg, _, _}], block]}]} = func_arg
@ -37,10 +37,10 @@ defmodule Temple.Parser.AnonymousFunctions do
defimpl Temple.EEx do
def to_eex(%{content: {name, _, args}, children: children}) do
{_do_and_else, args} = Temple.Parser.Private.split_args(args)
{_do_and_else, args} = Temple.Parser.Utils.split_args(args)
{args, {func, _, [{arrow, _, [[{arg, _, _}], _block]}]}, args2} =
Temple.Parser.Private.split_on_fn(args, {[], nil, []})
Temple.Parser.Utils.split_on_fn(args, {[], nil, []})
[
"<%= ",

View file

@ -15,7 +15,7 @@ defmodule Temple.Parser.DoExpressions do
@impl Parser
def run({name, meta, args}) do
{do_and_else, args} = Temple.Parser.Private.split_args(args)
{do_and_else, args} = Temple.Parser.Utils.split_args(args)
do_body = Temple.Parser.parse(do_and_else[:do])

View file

@ -5,7 +5,6 @@ defmodule Temple.Parser.Empty do
defstruct content: nil, attrs: [], children: []
alias Temple.Parser
alias Temple.Ast
@impl Parser
def applicable?(ast) when ast in [nil, []], do: true
@ -13,7 +12,7 @@ defmodule Temple.Parser.Empty do
@impl Parser
def run(_ast) do
Ast.new(
Temple.Ast.new(
__MODULE__,
meta: %{type: :empty}
)

View file

@ -19,7 +19,7 @@ defmodule Temple.Parser.NonvoidElementsAliases do
{do_and_else, args} =
args
|> Temple.Parser.Private.split_args()
|> Temple.Parser.Utils.split_args()
{do_and_else, args} =
case args do
@ -50,7 +50,7 @@ defmodule Temple.Parser.NonvoidElementsAliases do
[
"<",
content,
Temple.Parser.Private.compile_attrs(attrs),
Temple.Parser.Utils.compile_attrs(attrs),
">\n",
for(child <- children, do: Temple.EEx.to_eex(child)),
"\n</",

View file

@ -1,4 +1,4 @@
defmodule Temple.Parser.Private do
defmodule Temple.Parser.Utils do
@moduledoc false
def snake_to_kebab(stringable),
@ -27,7 +27,7 @@ defmodule Temple.Parser.Private do
end
end
else
"<%= Temple.Parser.Private.runtime_attrs(" <>
"<%= Temple.Parser.Utils.runtime_attrs(" <>
(attrs |> List.first() |> Macro.to_string()) <> ") %>"
end
end
@ -82,32 +82,4 @@ defmodule Temple.Parser.Private do
def pop_compact?(args) do
Keyword.pop(args, :compact, false)
end
def traverse(buffer, {:__block__, _meta, block}) do
traverse(buffer, block)
end
def traverse(buffer, [first | rest]) do
traverse(buffer, first)
traverse(buffer, rest)
end
def traverse(buffer, original_macro) do
Temple.Parser.parsers()
|> Enum.reduce_while(original_macro, fn parser, macro ->
with true <- parser.applicable?(macro),
:ok <- parser.run(macro, buffer) do
{:halt, macro}
else
{:component_applied, adjusted_macro} ->
traverse(buffer, adjusted_macro)
{:halt, adjusted_macro}
false ->
{:cont, macro}
end
end)
end
end

View file

@ -5,7 +5,6 @@ defmodule Temple.Parser.Text do
defstruct content: nil, attrs: [], children: []
alias Temple.Parser
alias Temple.Ast
@impl Parser
def applicable?(text) when is_binary(text), do: true
@ -13,7 +12,7 @@ defmodule Temple.Parser.Text do
@impl Parser
def run(text) do
Ast.new(
Temple.Ast.new(
__MODULE__,
content: text
)

View file

@ -15,7 +15,7 @@ defmodule Temple.Parser.VoidElementsAliases do
@impl Parser
def run({name, _, args}) do
{_do_and_else, [args]} = Temple.Parser.Private.split_args(args)
{_do_and_else, [args]} = Temple.Parser.Utils.split_args(args)
name = Parser.void_elements_lookup()[name]
@ -32,7 +32,7 @@ defmodule Temple.Parser.VoidElementsAliases do
[
"<",
to_string(content),
Temple.Parser.Private.compile_attrs(attrs),
Temple.Parser.Utils.compile_attrs(attrs),
">\n"
]
end

View file

@ -291,7 +291,7 @@ defmodule TempleTest do
end
assert result ==
~s{<fieldset<%= Temple.Parser.Private.runtime_attrs(if(true == false) do [disabled: true]else []end) %>><input type="text"></fieldset>}
~s{<fieldset<%= Temple.Parser.Utils.runtime_attrs(if(true == false) do [disabled: true]else []end) %>><input type="text"></fieldset>}
end
test "can pass a variable as assigns" do
@ -303,7 +303,7 @@ defmodule TempleTest do
end
assert result ==
~s{<fieldset<%= Temple.Parser.Private.runtime_attrs(foo_bar) %>><input type="text"></fieldset>}
~s{<fieldset<%= Temple.Parser.Utils.runtime_attrs(foo_bar) %>><input type="text"></fieldset>}
end
test "can pass a function as assigns" do
@ -315,6 +315,6 @@ defmodule TempleTest do
end
assert result ==
~s{<fieldset<%= Temple.Parser.Private.runtime_attrs(Foo.foo_bar()) %>><input type="text"></fieldset>}
~s{<fieldset<%= Temple.Parser.Utils.runtime_attrs(Foo.foo_bar()) %>><input type="text"></fieldset>}
end
end