Sha256: 5267b71e38f831cc77a4986b0882259dd21b1a2ed1abd5497465755c4fd72665

Contents?: true

Size: 1.19 KB

Versions: 4

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

require 'parser'

module Leftovers
  module AST
    class Builder < ::Parser::Builders::Default
      def n(type, children, source_map) # leftovers:keep
        self.class.node_class(type).new(type, children, location: source_map)
      end

      def self.node_class(type) # rubocop:disable Metrics
        case type
        when :array then ArrayNode
        when :block then BlockNode
        when :casgn then CasgnNode
        when :const then ConstNode
        when :def then DefNode
        when :defs then DefsNode
        when :false then FalseNode
        when :hash then HashNode
        when :int, :float then NumericNode
        when :lvar, :ivar, :gvar, :cvar then VarNode
        when :ivasgn, :cvasgn, :gvasgn then VasgnNode
        when :module, :class then ModuleNode
        when :nil then NilNode
        when :send, :csend then SendNode
        when :str then StrNode
        when :sym then SymNode
        when :true then TrueNode
        else Node
        end
      end

      # Don't complain about invalid strings
      # This is called by ::Parser::AST internals
      def string_value(token) # leftovers:keep
        value(token)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
leftovers-0.12.2 lib/leftovers/ast/builder.rb
leftovers-0.12.1 lib/leftovers/ast/builder.rb
leftovers-0.12.0 lib/leftovers/ast/builder.rb
leftovers-0.11.2 lib/leftovers/ast/builder.rb