class JSON::Lisp::Env

Attributes

constants[R]

Public Class Methods

new(constants) click to toggle source
# File lib/json/lisp/env.rb, line 6
def initialize(constants)
  @constants = constants.dup.freeze
end

Public Instance Methods

evaluate(expression) click to toggle source
# File lib/json/lisp/env.rb, line 10
def evaluate(expression)
  if expression.is_a?(Array)
    fn = constants[expression[0]]
    params = expression[1..-1].map { |x| evaluate(x) }
    fn[*params]
  elsif expression.is_a?(String)
    constants[expression]
  else
    expression
  end
end
evaluate_json(json_string) click to toggle source
# File lib/json/lisp/env.rb, line 22
def evaluate_json(json_string)
  evaluate(JSON.parse(json_string))
end