Class: Conflisp::Language

Inherits:
Object
  • Object
show all
Defined in:
lib/conflisp/language.rb

Overview

A collection of functions that can evaluate JSON encoded s-expressions

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(registry:) ⇒ Language



16
17
18
# File 'lib/conflisp/language.rb', line 16

def initialize(registry:)
  @registry = registry
end

Instance Attribute Details

#registryObject (readonly)

Returns the value of attribute registry.



9
10
11
# File 'lib/conflisp/language.rb', line 9

def registry
  @registry
end

Class Method Details

.define(&block) ⇒ Object



11
12
13
14
# File 'lib/conflisp/language.rb', line 11

def self.define(&block)
  method_registry = DSL.define(&block)
  new(registry: method_registry)
end

Instance Method Details

#evaluate(expression, globals: {}) ⇒ Object



20
21
22
23
# File 'lib/conflisp/language.rb', line 20

def evaluate(expression, globals: {})
  evaluator = Evaluator.new(registry: registry, globals: globals)
  evaluator.resolve(expression)
end

#extend(&block) ⇒ Object



25
26
27
28
# File 'lib/conflisp/language.rb', line 25

def extend(&block)
  new_registry = DSL.define(&block)
  self.class.new(registry: registry.merge(new_registry))
end