Sha256: 0c0f3cfd5f547368898331406fc42102c1a2ec370d6c58a05848cad9e8bf5396
Contents?: true
Size: 1.63 KB
Versions: 4
Compression:
Stored size: 1.63 KB
Contents
# frozen_string_literal: true require 'parser' module Leftovers module AST class Node < ::Parser::AST::Node def initialize(type, children = [], properties = {}) # ::AST::Node#initialize freezes itself. # so can't use normal memoizations @memo = {} super end # This is called by ::Parser::AST internals def updated(type = nil, children = nil, properties = nil) # leftovers:keep maybe_copy = super class_for_type = Leftovers::AST::Builder.node_class(maybe_copy.type) return maybe_copy if maybe_copy.instance_of?(class_for_type) class_for_type.new(maybe_copy.type, maybe_copy.children, location: maybe_copy.loc) end def first children.first end def second children[1] end def path loc.expression.source_buffer.name end def privacy=(value) @memo[:privacy] = value end def privacy @memo[:privacy] || :public end def to_scalar_value nil end def scalar? false end def to_s '' end def to_sym :'' end def to_literal_s nil end def hash? false end def proc? false end def sym? false end def as_arguments_list @memo[:as_arguments_list] ||= [self] end def arguments nil end def positional_arguments nil end def receiver nil end def kwargs nil end def name nil end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
leftovers-0.11.1 | lib/leftovers/ast/node.rb |
leftovers-0.11.0 | lib/leftovers/ast/node.rb |
leftovers-0.10.0 | lib/leftovers/ast/node.rb |
leftovers-0.9.0 | lib/leftovers/ast/node.rb |