Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

Earlopain
Copy link
Contributor

I stumbled across the following html snippet which crashes the parser: <div foo=>bar</div>. The interpreted html from browsers (both chrome and firefox) is <div foo="">bar</div> so the generated ast with the fix seems to make sense to me.

Error trace

/home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/parser-3.3.4.2/lib/parser/source/range.rb:39:in `initialize': Parser::Source::Range: end_pos must not be less than begin_pos (ArgumentError)

          raise ArgumentError, 'Parser::Source::Range: end_pos must not be less than begin_pos'
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/tokenizer/location.rb:23:in `initialize'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:214:in `new'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:214:in `build_location'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:206:in `build_node'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:177:in `build_attribute_node'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:151:in `build_tag_attributes_node'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:133:in `build_tag_node'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:79:in `build_document_node'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:49:in `ast'

```
/home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/parser-3.3.4.2/lib/parser/source/range.rb:39:in `initialize': Parser::Source::Range: end_pos must not be less than begin_pos (ArgumentError)

          raise ArgumentError, 'Parser::Source::Range: end_pos must not be less than begin_pos'
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/tokenizer/location.rb:23:in `initialize'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:214:in `new'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:214:in `build_location'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:206:in `build_node'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:177:in `build_attribute_node'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:151:in `build_tag_attributes_node'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:133:in `build_tag_node'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:79:in `build_document_node'
        from /home/earlopain/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/better_html-2.1.1/lib/better_html/parser.rb:49:in `ast'
```
@Earlopain
Copy link
Contributor Author

Can someone please take a look?

@Earlopain
Copy link
Contributor Author

Seems like this is not maintained anymore and I stopped using this gem

@Earlopain Earlopain closed this Sep 16, 2025
@rafaelfranca rafaelfranca reopened this Sep 18, 2025
@rafaelfranca
Copy link
Member

I think now that we have herb, there is little reason to use this gem, but regardless I'll merge your PR. Sorry for the delay.

@rafaelfranca rafaelfranca merged commit 54c8010 into Shopify:main Sep 18, 2025
1 check passed
@Earlopain
Copy link
Contributor Author

Thank you! Indeed, I have since moved to herb for what I need.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants