Sha256: 2dc5543c6a76df5eb4438d8b3260180c715976d7e428d3713aa9fe69788e40bd

Contents?: true

Size: 1.25 KB

Versions: 5

Compression:

Stored size: 1.25 KB

Contents

module Jsonerino
  class JsonValue
    attr_accessor :start, :finish
  end

  class JsonNull < JsonValue
    def resolve
      nil
    end
  end

  class JsonBool < JsonValue
    attr_reader :value

    def initialize(value)
      @value = value
    end

    def resolve
      @value
    end
  end

  class JsonNumber < JsonValue
    attr_reader :value

    def initialize(value)
      @value = value
    end

    def resolve
      @value
    end
  end

  class JsonString < JsonValue
    attr_reader :value

    def initialize(value)
      @value = value
    end

    def resolve
      @value
    end
  end

  class JsonArray < JsonValue
    attr_reader :value

    def initialize()
      @value = []
    end

    def push(value)
      raise 'Value is not instnace of JsonValue' unless value.is_a? JsonValue

      @value.push(value)
    end

    def resolve
      @value.map(&:resolve)
    end
  end

  class JsonObject < JsonValue
    attr_reader :value

    def initialize()
      @value = {}
    end

    def push(key, value)
      raise 'Value is not instnace of JsonValue' unless value.is_a? JsonValue

      @value[key] = value
    end

    def resolve
      @value.keys.each do |key|
        @value[key] = @value[key].resolve
      end
      @value
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
jsonerino-0.2.4 lib/jsonerino/ast.rb
jsonerino-0.2.3 lib/jsonerino/ast.rb
jsonerino-0.2.2 lib/jsonerino/ast.rb
jsonerino-0.2.1 lib/jsonerino/ast.rb
jsonerino-0.1.1 lib/jsonerino/ast.rb