class Socrates::Core::StateData
Constants
- END_OF_CONVERSATION
Attributes
last_interaction_timestamp[RW]
state_action[RW]
state_id[RW]
Public Class Methods
deserialize(string)
click to toggle source
# File lib/socrates/core/state_data.rb, line 99 def self.deserialize(string) YAML.load(string) end
new(state_id: nil, state_action: nil, data: {})
click to toggle source
# File lib/socrates/core/state_data.rb, line 14 def initialize(state_id: nil, state_action: nil, data: {}) @state_id = state_id @state_action = state_action @data = data @temporary_keys = [] end
Public Instance Methods
clear(key = nil)
click to toggle source
# File lib/socrates/core/state_data.rb, line 85 def clear(key = nil) if key @data.delete(key) @temporary_keys.delete(key) else @data.clear @temporary_keys.clear end end
each_key(&block)
click to toggle source
# File lib/socrates/core/state_data.rb, line 41 def each_key(&block) @data.each_key(&block) end
elapsed_time()
click to toggle source
# File lib/socrates/core/state_data.rb, line 33 def elapsed_time Time.current - @last_interaction_timestamp end
expired?()
click to toggle source
# File lib/socrates/core/state_data.rb, line 25 def expired? return false if last_interaction_timestamp.nil? || Socrates.config.expired_timeout.nil? || Socrates.config.expired_timeout.zero? elapsed_time > Socrates.config.expired_timeout end
finished?()
click to toggle source
# File lib/socrates/core/state_data.rb, line 21 def finished? @state_id.nil? || @state_id == END_OF_CONVERSATION end
get(key, clear: false)
click to toggle source
# File lib/socrates/core/state_data.rb, line 57 def get(key, clear: false) value = @data[key] if @temporary_keys.include?(key) || clear @temporary_keys.delete(key) @data.delete(key) end value end
has_key?(key)
click to toggle source
# File lib/socrates/core/state_data.rb, line 49 def has_key?(key) @data.has_key?(key) end
has_temporary_key?(key)
click to toggle source
# File lib/socrates/core/state_data.rb, line 53 def has_temporary_key?(key) @temporary_keys.include?(key) end
keys()
click to toggle source
# File lib/socrates/core/state_data.rb, line 45 def keys @data.keys end
merge(other)
click to toggle source
# File lib/socrates/core/state_data.rb, line 81 def merge(other) @data.merge!(other) end
reset_elapsed_time()
click to toggle source
# File lib/socrates/core/state_data.rb, line 37 def reset_elapsed_time @last_interaction_timestamp = Time.current end
serialize()
click to toggle source
# File lib/socrates/core/state_data.rb, line 95 def serialize YAML.dump(self) end
set(key, value)
click to toggle source
# File lib/socrates/core/state_data.rb, line 68 def set(key, value) @data[key] = value end
set_temporary(key, value)
click to toggle source
# File lib/socrates/core/state_data.rb, line 72 def set_temporary(key, value) if @data.has_key?(key) && !@temporary_keys.include?(key) raise ArgumentError, "Cannot overrite key '#{key}' with a temporary value." end @data[key] = value @temporary_keys << key end