Class: RubyNext::Language::Rewriters::PinVarsPattern
- Inherits:
-
PatternMatching
- Object
- Parser::TreeRewriter
- Abstract
- Base
- PatternMatching
- RubyNext::Language::Rewriters::PinVarsPattern
- Defined in:
- lib/ruby-next/language/rewriters/3.1/pin_vars_pattern.rb
Overview
Separate pattern matching rewriter for Ruby 2.7 and 3.0 to transpile only ^(ivar|cvar|gvar)
Constant Summary collapse
- NAME =
"pattern-matching-pin-vars"
- SYNTAX_PROBE =
"@a = 0; case 0; in ^@a; true; end"
- MIN_SUPPORTED_VERSION =
Gem::Version.new("3.1.0")
Constants inherited from PatternMatching
RubyNext::Language::Rewriters::PatternMatching::ALTERNATION_MARKER, RubyNext::Language::Rewriters::PatternMatching::CURRENT_HASH_KEY, RubyNext::Language::Rewriters::PatternMatching::MATCHEE, RubyNext::Language::Rewriters::PatternMatching::MATCHEE_ARR, RubyNext::Language::Rewriters::PatternMatching::MATCHEE_HASH
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- #on_case_match(node) ⇒ Object
- #on_match_pattern(node) ⇒ Object
- #on_match_pattern_p(node) ⇒ Object
- #on_pin(node) ⇒ Object
Methods inherited from Base
Methods inherited from Abstract
ast?, #initialize, text?, unsupported_syntax?, unsupported_version?
Constructor Details
This class inherits a constructor from RubyNext::Language::Rewriters::Base
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class RubyNext::Language::Rewriters::PatternMatching
Instance Method Details
#on_case_match(node) ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/ruby-next/language/rewriters/3.1/pin_vars_pattern.rb', line 15 def on_case_match(node) @has_pin_vars = false process_regular_node(node).then do |new_node| return new_node unless has_pin_vars super(node) end end |
#on_match_pattern(node) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/ruby-next/language/rewriters/3.1/pin_vars_pattern.rb', line 23 def on_match_pattern(node) @has_pin_vars = false process_regular_node(node).then do |new_node| return new_node unless has_pin_vars super(node) end end |
#on_match_pattern_p(node) ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/ruby-next/language/rewriters/3.1/pin_vars_pattern.rb', line 31 def on_match_pattern_p(node) @has_pin_vars = false process_regular_node(node).then do |new_node| return new_node unless has_pin_vars super(node) end end |
#on_pin(node) ⇒ Object
39 40 41 42 |
# File 'lib/ruby-next/language/rewriters/3.1/pin_vars_pattern.rb', line 39 def on_pin(node) @has_pin_vars = node.children.first.type != :lvar super(node) end |