nebulab / erb-formatter

Format ERB files with speed and precision
MIT License
151 stars 25 forks source link

Ruby blocks are getting lost #37

Open tmaier opened 11 months ago

tmaier commented 11 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 11 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 months 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 3 months ago

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

I hope this helps to push this forward

dvogtfstr commented 1 month ago

smthg similiar to me:

-  <%= active_admin_form_for :admin_user, url: admin_otp_enable_path, html: { method: :put } do |f|
-    f.inputs do
-      f.input :otp, label: I18n.t('active_admin.otp.one_time_password')
-    end
-
-    f.actions do
-      f.action :submit, label: I18n.t('active_admin.otp.setup.enable'), button_html: { value: I18n.t('active_admin.otp.setup.enable') }
-    end
-  end %>
+  <%= active_admin_form_for :admin_user,
+  url: admin_otp_enable_path,
+  html: {
+    method: :put,
+  } %>