README.md in ripper_ruby_parser-1.4.2 vs README.md in ripper_ruby_parser-1.5.0
- old
+ new
@@ -1,37 +1,69 @@
# RipperRubyParser
by Matijs van Zuijlen
-http://www.github.com/mvz/ripper_ruby_parser
-
## Description
Parse with Ripper, produce sexps that are compatible with RubyParser.
## Features/Notes
-* Drop-in replacement for RubyParser.
-* Should handle 1.9 and later syntax gracefully.
-* Requires MRI 2.2 or higher
+* 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
+## 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
+
+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.
+
## Install
-* gem install ripper_ruby_parser
+ gem install ripper_ruby_parser
## Synopsis
require 'ripper_ruby_parser'
parser = RipperRubyParser::Parser.new
- result = parser.parse "puts 'Hello World'"
- p result
+ parser.parse "puts 'Hello World'"
# => s(:call, nil, :puts, s(:arglist, s(:str, "Hello World!")))
+ parser.parse '"foo\u273bbar"'
+ # => s(:str, "foo✻bar")
+
+ parser.extra_compatible = true
+
+ parser.parse '"foo\u273bbar"'
+ # => s(:str, "foo✻r")
+
## Requirements
* Ruby 2.2 or higher
-* sexp_processor
+* `sexp_processor`
## Hacking and contributing
If you want to send pull requests or patches, please: