Class: Smartdown::Engine::State
- Inherits:
-
Object
- Object
- Smartdown::Engine::State
- Defined in:
- lib/smartdown/engine/state.rb
Instance Method Summary collapse
- #==(other) ⇒ Object
- #get(key) ⇒ Object
- #has_key?(key) ⇒ Boolean
- #has_value?(key, expected_value) ⇒ Boolean
-
#initialize(data = {}) ⇒ State
constructor
A new instance of State.
- #keys ⇒ Object
- #put(name, value) ⇒ Object
Constructor Details
#initialize(data = {}) ⇒ State
Returns a new instance of State.
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
41 42 43 |
# File 'lib/smartdown/engine/state.rb', line 41 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 27 28 29 30 31 |
# File 'lib/smartdown/engine/state.rb', line 24 def get(key) value = fetch(key) if value.respond_to?(:call) evaluate(value) else value end end |
#has_key?(key) ⇒ Boolean
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
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 |
#keys ⇒ Object
37 38 39 |
# File 'lib/smartdown/engine/state.rb', line 37 def keys Set.new(@data.keys) end |