nebulab / erb-formatter

Format ERB files with speed and precision
MIT License
135 stars 22 forks source link

Ruby blocks are getting lost #37

Open tmaier opened 8 months ago

tmaier commented 8 months ago

After running erb-formatter, I see this case a couple of times in the diff:

image image

As you can see, the block within turbo_frame_tag is being lost

elia commented 8 months ago

I'm not sure what's going on, I tried locally modifying the with_block fixture and couldn't reproduce:

<% foo.each do |bar| %>
  <p><%= baz %></p>
<% end %>

<%= cb.with_footer(classes: 'pt-0 pb-5') do
  turbo_frame_tag "#{identifier}-footer",target: 'inner-frame' do
    paginate publications,
      params: 1
      controller: 'publications',
      action: 'index'
      outer_window: 2,
      window: 2,
      views_prefix: 'v4'
 end
end %>

is it still an issue? maybe a syntax_tree upgrade already fixed it?

grncdr commented 3 weeks ago

I can reproduce this issue with erb-formatter 0.7.3 and syntax_tree 6.2.0

Given the following snippet, the block will be removed.

# The entire block will be removed resulting in <% helper arg %>
<% helper arg do |api|
  api.foo
  api.bar
  api.baz
end %>

Removing the argument works:

<% helper do |api|
  api.foo
  api.bar
  api.baz
end %>

Wrapping the argument in parenthesis also works:

<% helper(arg) do |api|
  api.foo
  api.bar
  api.baz
end %>
tmaier commented 1 week ago

@grncdr thanks for picking this up. I created now some test cases in PR #61.

I hope this helps to push this forward