Module: Mutant::AST::Regexp Private
- Defined in:
- lib/mutant/ast/regexp.rb,
lib/mutant/ast/regexp/transformer.rb,
lib/mutant/ast/regexp/transformer/root.rb,
lib/mutant/ast/regexp/transformer/text.rb,
lib/mutant/ast/regexp/transformer/direct.rb,
lib/mutant/ast/regexp/transformer/recursive.rb,
lib/mutant/ast/regexp/transformer/quantifier.rb,
lib/mutant/ast/regexp/transformer/named_group.rb,
lib/mutant/ast/regexp/transformer/options_group.rb
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Regexp source mapper
Defined Under Namespace
Classes: Transformer
Class Method Summary collapse
-
.expand_regexp_ast(node) ⇒ Parser::AST::Node
private
Convert’s a ‘parser` `regexp` node into more fine-grained AST nodes.
-
.parse(regexp) ⇒ Regexp::Expression?
private
Parse regex string into expression.
-
.to_ast(expression) ⇒ Parser::AST::Node
private
Convert expression into ast node.
-
.to_expression(node) ⇒ Regexp::Expression
private
Convert node into expression.
Class Method Details
.expand_regexp_ast(node) ⇒ Parser::AST::Node
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Convert’s a ‘parser` `regexp` node into more fine-grained AST nodes.
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/mutant/ast/regexp.rb', line 41 def self.(node) *body, _opts = node.children # NOTE: We only mutate parts of regexp body if the body is composed of # only strings. Regular expressions with interpolation are skipped return unless body.all? { |child| child.type.equal?(:str) } body_expression = parse(body.map(&:children).join) to_ast(body_expression) end |
.parse(regexp) ⇒ Regexp::Expression?
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Parse regex string into expression
12 13 14 |
# File 'lib/mutant/ast/regexp.rb', line 12 def self.parse(regexp) ::Regexp::Parser.parse(regexp) end |
.to_ast(expression) ⇒ Parser::AST::Node
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Convert expression into ast node
21 22 23 24 25 |
# File 'lib/mutant/ast/regexp.rb', line 21 def self.to_ast(expression) ast_type = :"regexp_#{expression.token}_#{expression.type}" Transformer.lookup(ast_type).to_ast(expression) end |
.to_expression(node) ⇒ Regexp::Expression
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Convert node into expression
32 33 34 |
# File 'lib/mutant/ast/regexp.rb', line 32 def self.to_expression(node) Transformer.lookup(node.type).to_expression(node) end |