README.md in ripper_ruby_parser-1.5.1 vs README.md in ripper_ruby_parser-1.6.0

- old
+ new

@@ -9,61 +9,61 @@ ## Features/Notes * Drop-in replacement for RubyParser * Should handle 1.9 and later syntax gracefully * Requires MRI 2.3 or higher -* Compatible with RubyParser 3.12.0 +* Compatible with RubyParser 3.13.1 ## Known incompatibilities RipperRubyParser has some incompatibilities with RubyParser. For some of these, the behavior can be changed by turning on extra-compatible mode. The following incompatibilities cannot be changed: * RipperRubyParser won't handle non-UTF-8 files without an encoding comment, just like regular Ruby -* RipperRubyParser keeps carriage return characters in heredocs that include them * RipperRubyParser does not attempt to match RubyParser's line numbering bugs +* RipperRubyParser correctly dedents heredocs with interpolations The following incompatibilities can be made compatible by turning on extra-compatible mode: -* RipperRubyParser handles unicode escapes without braces correctly, while - RubyParser absorbs trailing hexadecimal characters -* RipperRubyParser handles the rescue modifier correctly, while RubyParser - still contains a bug that was fixed in Ruby 2.4. See RubyParser - [issue #227](https://github.com/seattlerb/ruby_parser/issues/227). -* RubyParser handles byte sequences in second and further literal parts of a - strings with interpolations differently. RipperRubyParser will convert these - to unicode if possible. -* RubyParser handles byte sequences in heredocs and interpolating word lists - differently. RipperRubyParser will convert these to unicode if possible. +* Operator assignment of a method call without parentheses to a collection + element uses and `:array` S-expression instead of `:arglist` +* RipperRubyParser keeps carriage return characters in heredocs that include + them ## Install gem install ripper_ruby_parser ## Synopsis - require 'ripper_ruby_parser' +```ruby +require 'ripper_ruby_parser' - parser = RipperRubyParser::Parser.new - parser.parse "puts 'Hello World'" - # => s(:call, nil, :puts, s(:arglist, s(:str, "Hello World!"))) +parser = RipperRubyParser::Parser.new +parser.parse "puts 'Hello World'" +# => s(:call, nil, :puts, s(:str, "Hello World!")) +parser.parse "foo[bar] += baz qux" +# => s(:op_asgn1, s(:call, nil, :foo), +# s(:arglist, s(:call, nil, :bar)), +# :+, +# s(:call, nil, :baz, s(:call, nil, :qux))) +parser.extra_compatible = true - parser.parse '"foo\u273bbar"' - # => s(:str, "foo✻bar") +parser.parse "foo[bar] += baz qux" +# => s(:op_asgn1, s(:call, nil, :foo), +# s(:array, s(:call, nil, :bar)), +# :+, +# s(:call, nil, :baz, s(:call, nil, :qux))) +``` - parser.extra_compatible = true - - parser.parse '"foo\u273bbar"' - # => s(:str, "foo✻r") - ## Requirements -* Ruby 2.2 or higher +* Ruby 2.3 or higher * `sexp_processor` ## Hacking and contributing If you want to send pull requests or patches, please: @@ -79,10 +79,10 @@ ## License (The MIT License) -Copyright (c) 2012, 2014-2018 Matijs van Zuijlen +Copyright (c) 2012, 2014-2019 Matijs van Zuijlen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish,