Correctly parse do blocks
Did not correctly parse expressions with do blocks where the expression had two or more arguments before the block.
This commit is contained in:
parent
2206aa62fe
commit
7bf649c4b5
3 changed files with 22 additions and 7 deletions
|
@ -2,6 +2,10 @@
|
||||||
|
|
||||||
## Master
|
## Master
|
||||||
|
|
||||||
|
### Bugs
|
||||||
|
|
||||||
|
- Did not correctly parse expressions with do blocks where the expression had two or more arguments before the block
|
||||||
|
|
||||||
## 0.6.0-alpha.4
|
## 0.6.0-alpha.4
|
||||||
|
|
||||||
- Fix a bug where lists would not properly compile
|
- Fix a bug where lists would not properly compile
|
||||||
|
|
|
@ -395,13 +395,10 @@ defmodule Temple.Parser do
|
||||||
%{
|
%{
|
||||||
name: :do_expressions,
|
name: :do_expressions,
|
||||||
applicable?: fn
|
applicable?: fn
|
||||||
{_, _, [_, [{:do, _} | _]]} ->
|
{_, _, args} when is_list(args) ->
|
||||||
true
|
Enum.any?(args, fn arg -> match?([{:do, _} | _], arg) end)
|
||||||
|
|
||||||
{_, _, [[{:do, _} | _]]} ->
|
_ ->
|
||||||
true
|
|
||||||
|
|
||||||
{_, _, _} ->
|
|
||||||
false
|
false
|
||||||
end,
|
end,
|
||||||
parse: fn {name, meta, args}, buffer ->
|
parse: fn {name, meta, args}, buffer ->
|
||||||
|
|
|
@ -351,6 +351,20 @@ defmodule TempleTest do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
assert result == ~s{<%= leenk(to: "/route", class: "foo") do %><div class="hi"></div><% end %>}
|
assert result ==
|
||||||
|
~s{<%= leenk(to: "/route", class: "foo") do %><div class="hi"></div><% end %>}
|
||||||
|
end
|
||||||
|
|
||||||
|
test "for with 2 generators" do
|
||||||
|
result =
|
||||||
|
temple do
|
||||||
|
for x <- 1..5, y <- 6..10 do
|
||||||
|
div do: x
|
||||||
|
div do: y
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
assert result ==
|
||||||
|
~s{<%= for(x <- 1..5, y <- 6..10) do %><div><%= x %></div><div><%= y %></div><% end %>}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Reference in a new issue