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,