diff --git a/lib/erb/linter/converter.rb b/lib/erb/linter/converter.rb index 5e3de09..990f3e7 100644 --- a/lib/erb/linter/converter.rb +++ b/lib/erb/linter/converter.rb @@ -48,14 +48,13 @@ def erb2html(source) attributes.map! do |attribute| if attribute.match?(erb_tags_matcher) space, attribute = attribute.scan(/\A(\s+)(.*)\z/m).flatten - attribute.gsub!(erb_tags_matcher, erb_tags) attribute = - case attribute - when /\A#{ERB_TAG}\z/ - %{data-erb-#{i += 1}="#{CGI.escapeHTML(attribute)}"} - when /\A#{ATTR_NAME}=/ - name, value = attribute.split("=", 2) + case + when /\A#{ERB_TAG}\z/ === attribute.gsub(erb_tags_matcher, erb_tags) + %{data-erb-#{i += 1}="#{CGI.escapeHTML(attribute.gsub(erb_tags_matcher, erb_tags))}"} + when /\A#{ATTR_NAME}=/ === attribute + name, value = attribute.split("=", 2).map { _1.gsub(erb_tags_matcher, erb_tags) } quote = '"' if value.match(/\A['"]/) quote = value[0] @@ -63,7 +62,7 @@ def erb2html(source) end %{data-erb-#{name}=#{quote}#{CGI.escapeHTML(value)}#{quote}} else - raise "Don't know how to process attribute: #{attribute.inspect}" + raise "Don't know how to process attribute: #{attribute.gsub(erb_tags_matcher, erb_tags).inspect}" end "#{space}#{attribute}" diff --git a/test/erb/lint_test.rb b/test/erb/lint_test.rb index 4c368e7..ef6f5b8 100644 --- a/test/erb/lint_test.rb +++ b/test/erb/lint_test.rb @@ -44,6 +44,7 @@
> > + ="bar" data-<% identifier %>-foo="<%= 'bar' %>"> <%= :bar if bar %>> " <%= "bar" if bar %>> <%= :bar if bar %>/> @@ -72,6 +73,7 @@
+ =\"bar\" data-erb-data--foo=\"<%= 'bar' %>\">