diff --git a/lib/better_html/parser.rb b/lib/better_html/parser.rb index a6a8b11..b0510a1 100644 --- a/lib/better_html/parser.rb +++ b/lib/better_html/parser.rb @@ -191,7 +191,7 @@ def build_attribute_value_node(tokens) :attribute_unquoted_value, ) - build_node(:attribute_value, children) + build_node(:attribute_value, children) if children.any? end def build_text_node(tokens) diff --git a/test/better_html/parser_test.rb b/test/better_html/parser_test.rb index 338967a..3ce79c6 100644 --- a/test/better_html/parser_test.rb +++ b/test/better_html/parser_test.rb @@ -248,6 +248,37 @@ class ParserTest < ActiveSupport::TestCase tree.ast end + test "consumes tag attributes without value" do + tree = Parser.new(buffer("
bar
")) + assert_equal s( + :document, + s( + :tag, + nil, + s(:tag_name, "div"), + s( + :tag_attributes, + s( + :attribute, + s(:attribute_name, "foo"), + s(:equal), + nil, + ), + ), + nil, + ), + s(:text, "bar"), + s( + :tag, + s(:solidus), + s(:tag_name, "div"), + nil, + nil, + ), + ), + tree.ast + end + test "consume tag attributes nodes interpolation in name and value" do tree = Parser.new(buffer("
=\"some <%= value %> foo\">")) assert_equal s(