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