Class: RubyNext::Language::Rewriters::BindVarsPattern
- Inherits:
-
PatternMatching
- Object
- Parser::TreeRewriter
- Abstract
- Base
- PatternMatching
- RubyNext::Language::Rewriters::BindVarsPattern
- Defined in:
- lib/ruby-next/language/rewriters/proposed/bind_vars_pattern.rb
Overview
Separate pattern matching rewriter for Ruby <3.2 to transpile patterns with variable (instance, class, global) binding
Constant Summary collapse
- NAME =
"pattern-matching-find-pattern"
- SYNTAX_PROBE =
"case 0; in @a; true; else; 1; end"
- MIN_SUPPORTED_VERSION =
Gem::Version.new(RubyNext::NEXT_VERSION)
Constants inherited from PatternMatching
PatternMatching::ALTERNATION_MARKER, PatternMatching::CURRENT_HASH_KEY, PatternMatching::MATCHEE, PatternMatching::MATCHEE_ARR, 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_match_var(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
18 19 20 21 22 23 24 |
# File 'lib/ruby-next/language/rewriters/proposed/bind_vars_pattern.rb', line 18 def on_case_match(node) @has_vars_pattern = false process_regular_node(node).then do |new_node| return new_node unless has_vars_pattern super(node) end end |
#on_match_pattern(node) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/ruby-next/language/rewriters/proposed/bind_vars_pattern.rb', line 26 def on_match_pattern(node) @has_vars_pattern = false process_regular_node(node).then do |new_node| return new_node unless has_vars_pattern super(node) end end |
#on_match_pattern_p(node) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/ruby-next/language/rewriters/proposed/bind_vars_pattern.rb', line 34 def on_match_pattern_p(node) @has_vars_pattern = false process_regular_node(node).then do |new_node| return new_node unless has_vars_pattern super(node) end end |
#on_match_var(node) ⇒ Object
42 43 44 45 |
# File 'lib/ruby-next/language/rewriters/proposed/bind_vars_pattern.rb', line 42 def on_match_var(node) @has_vars_pattern = true if node.children[0].is_a?(::Parser::AST::Node) super(node) end |