class RubyNext::Language::Rewriters::EndlessRange
Constants
- MIN_SUPPORTED_VERSION
- NAME
- SYNTAX_PROBE
Attributes
current_index[R]
Public Instance Methods
on_erange(node)
click to toggle source
# File lib/ruby-next/language/rewriters/endless_range.rb, line 25 def on_erange(node) return unless node.children.last.nil? context.track! self new_end = if index_arg?(node) s(:int, -1) else s(:const, s(:const, s(:cbase), :Float), :INFINITY) end replace(node.loc.expression, "#{node.children.first.loc.expression.source}..#{unparse(new_end)}") node.updated( :irange, [ node.children.first, new_end ] ) end
Also aliased as: on_irange
on_index(node)
click to toggle source
# File lib/ruby-next/language/rewriters/endless_range.rb, line 11 def on_index(node) @current_index = node new_index = process(node.children.last) return unless new_index != node.children.last node.updated( nil, [ node.children.first, new_index ] ) end
Private Instance Methods
index_arg?(node)
click to toggle source
# File lib/ruby-next/language/rewriters/endless_range.rb, line 57 def index_arg?(node) current_index&.children&.include?(node) end