Class: Smartdown::Engine::State

Inherits:
Object
  • Object
show all
Defined in:
lib/smartdown/engine/state.rb

Instance Method Summary collapse

Constructor Details

#initialize(data = {}) ⇒ State

Returns a new instance of State.

Raises:



8
9
10
11
12
13
14
# File 'lib/smartdown/engine/state.rb', line 8

def initialize(data = {})
  @data = duplicate_and_normalize_hash(data)
  @data["path"] ||= []
  @data["responses"] ||= []
  @cached = {}
  raise ArgumentError, "must specify current_node" unless has_key?("current_node")
end

Instance Method Details

#==(other) ⇒ Object



36
37
38
# File 'lib/smartdown/engine/state.rb', line 36

def ==(other)
  other.is_a?(self.class) && other.keys == self.keys && @data.all? { |k, v| other.has_value?(k, v) }
end

#get(key) ⇒ Object



24
25
26
# File 'lib/smartdown/engine/state.rb', line 24

def get(key)
  fetch(key)
end

#has_key?(key) ⇒ Boolean

Returns:



16
17
18
# File 'lib/smartdown/engine/state.rb', line 16

def has_key?(key)
  @data.has_key?(key.to_s)
end

#has_value?(key, expected_value) ⇒ Boolean

Returns:



20
21
22
# File 'lib/smartdown/engine/state.rb', line 20

def has_value?(key, expected_value)
  has_key?(key) && fetch(key) == expected_value
end

#keysObject



32
33
34
# File 'lib/smartdown/engine/state.rb', line 32

def keys
  Set.new(@data.keys)
end

#put(name, value) ⇒ Object



28
29
30
# File 'lib/smartdown/engine/state.rb', line 28

def put(name, value)
  State.new(@data.merge(name.to_s => value))
end