Skip to content

Commit

Permalink
Merge pull request #9102 from knu/upgrade_regexp_parser
Browse files Browse the repository at this point in the history
Upgrade regexp_parser to 2.0
  • Loading branch information
koic committed Nov 26, 2020
2 parents 86d33db + 9b90cae commit e723c9b
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 21 deletions.
1 change: 1 addition & 0 deletions changelog/change_upgrade_regexp_parser_to_20.md
@@ -0,0 +1 @@
* [#9102](https://github.com/rubocop-hq/rubocop/pull/9102): Upgrade regexp_parser to 2.0. ([@knu][])
2 changes: 1 addition & 1 deletion lib/rubocop/cop/style/redundant_regexp_escape.rb
Expand Up @@ -82,7 +82,7 @@ def delimiter?(node, char)

def each_escape(node)
node.parsed_tree&.traverse&.reduce(0) do |char_class_depth, (event, expr)|
yield(expr.text[1], expr.start_index, !char_class_depth.zero?) if expr.type == :escape
yield(expr.text[1], expr.ts, !char_class_depth.zero?) if expr.type == :escape

if expr.type == :set
char_class_depth + (event == :enter ? 1 : -1)
Expand Down
15 changes: 5 additions & 10 deletions lib/rubocop/ext/regexp_node.rb
Expand Up @@ -19,18 +19,13 @@ def assign_properties(*)
super

str = with_interpolations_blanked
begin
@parsed_tree = Regexp::Parser.parse(str, options: options)
@parsed_tree = begin
Regexp::Parser.parse(str, options: options)
rescue StandardError
@parsed_tree = nil
else
origin = loc.begin.end
source = @parsed_tree.to_s
@parsed_tree.each_expression(true) do |e|
e.origin = origin
e.source = source
end
nil
end
origin = loc.begin.end
@parsed_tree&.each_expression(true) { |e| e.origin = origin }
end

def each_capture(named: ANY)
Expand Down
11 changes: 2 additions & 9 deletions lib/rubocop/ext/regexp_parser.rb
Expand Up @@ -20,18 +20,11 @@ def initialize(expression, body:, quantifier: nil, begin_l: nil, end_l: nil)
module Expression
# Add `expression` and `loc` to all `regexp_parser` nodes
module Base
attr_accessor :origin, :source

def start_index
# ts is a byte index; convert it to a character index
@start_index ||= source.byteslice(0, ts).length
end
attr_accessor :origin

# Shortcut to `loc.expression`
def expression
@expression ||= begin
origin.adjust(begin_pos: start_index, end_pos: start_index + full_length)
end
@expression ||= origin.adjust(begin_pos: ts, end_pos: ts + full_length)
end

# @returns a location map like `parser` does, with:
Expand Down
2 changes: 1 addition & 1 deletion rubocop.gemspec
Expand Up @@ -33,7 +33,7 @@ Gem::Specification.new do |s|
s.add_runtime_dependency('parallel', '~> 1.10')
s.add_runtime_dependency('parser', '>= 2.7.1.5')
s.add_runtime_dependency('rainbow', '>= 2.2.2', '< 4.0')
s.add_runtime_dependency('regexp_parser', '>= 1.8')
s.add_runtime_dependency('regexp_parser', '>= 2.0')
s.add_runtime_dependency('rexml')
s.add_runtime_dependency('rubocop-ast', '>= 1.1.1')
s.add_runtime_dependency('ruby-progressbar', '~> 1.7')
Expand Down

0 comments on commit e723c9b

Please sign in to comment.