Sha256: eff45533406827dee4fe3d51f493a8eb89d23594233ddc9b0f3526ec669a1bdc

Contents?: true

Size: 1.17 KB

Versions: 27

Compression:

Stored size: 1.17 KB

Contents

module Johnson
  module Nodes
    SINGLE_NODES = %w{
      BitwiseNot
      Break
      Continue
      Delete
      False
      Name
      Not
      Null
      Number
      Parenthesis
      PostfixIncrement
      PrefixIncrement
      PostfixDecrement
      PrefixDecrement
      Regexp
      Return
      String
      This
      Throw
      True
      Typeof
      UnaryNegative
      UnaryPositive
      Void
    }
    class Node
      include Johnson::Visitable
      include Johnson::Visitors

      attr_accessor :value
      attr_reader :line, :column
      def initialize(line, column, value)
        @line = line
        @column = column
        @value = value
      end

      def to_s
        to_sexp.inspect
      end

      alias_method :inspect, :to_s

      def to_sexp
        SexpVisitor.new.accept(self)
      end

      def to_ecma
        EcmaVisitor.new.accept(self)
      end

      alias_method :to_js, :to_ecma

      def to_dot
        DotVisitor.new { |d| d.accept(self) }
      end

      def each(&block)
        EnumeratingVisitor.new(block).accept(self)
        self
      end
    end
    SINGLE_NODES.each { |se| const_set(se.to_sym, Class.new(Node)) }
  end
end

Version data entries

27 entries across 27 versions & 5 rubygems

Version Path
jbarnette-johnson-1.0.0.200806240111 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.200807291507 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.200808062051 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.200808062111 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.200811251942 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.20081126120511 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.20090127202936 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.20090225110820 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.20090326122910 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.20090326154650 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.20090326161333 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.20090402144841 lib/johnson/nodes/node.rb
jbarnette-johnson-1.0.0.20090402155420 lib/johnson/nodes/node.rb
johnson19-2.0.0.pre3 lib/johnson/nodes/node.rb
pre-johnson-2.0.0 lib/johnson/nodes/node.rb
johnson-2.0.0.pre3 lib/johnson/nodes/node.rb
johnson-2.0.0.pre2 lib/johnson/nodes/node.rb
johnson-2.0.0.pre1 lib/johnson/nodes/node.rb
johnson-2.0.0.pre0 lib/johnson/nodes/node.rb
johnson-1.2.0 lib/johnson/nodes/node.rb