Module: Inform::History

Defined in:
lib/story_teller/history.rb

Overview

The History module

Constant Summary collapse

DefaultHistoryLimit =
10
Histories =
defined?(Java) ? java.util.concurrent.ConcurrentHashMap.new : {}
HistoryCommandPattern =
%r{^(!|history)$}.freeze

Instance Method Summary collapse

Instance Method Details

#historyObject



30
31
32
# File 'lib/story_teller/history.rb', line 30

def history
  Histories[@player.identity] ||= []
end

#history_limitObject



34
35
36
37
# File 'lib/story_teller/history.rb', line 34

def history_limit
  return DefaultHistoryLimit unless @player.respond_to?(:preferences)
  @player.preferences.|(:history_limit, DefaultHistoryLimit).to_i
end

#record_history(s) ⇒ Object



39
40
41
42
43
44
# File 'lib/story_teller/history.rb', line 39

def record_history(s)
  return if s.nil? || s.empty? || HistoryCommandPattern.match?(s)
  history.delete_if { |i| i == s }
  history.push(s)
  history.shift if history.length > history_limit
end