Module: OneLineFromFile

Defined in:
lib/modules/one_line_from_file.rb

Constant Summary collapse

LINES_FILE =
'lines.txt'
USED_LINES_FILE =
'used_lines.txt'

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#linesObject (readonly)

store used strategies in a file with (store the md5 sum of the strategies’ text)



7
8
9
# File 'lib/modules/one_line_from_file.rb', line 7

def lines
  @lines
end

Instance Method Details

#add_lines(*new_lines) ⇒ Object



52
53
54
# File 'lib/modules/one_line_from_file.rb', line 52

def add_lines(*new_lines)
  @lines.concat(new_lines)
end

#get_all_linesObject



28
29
30
# File 'lib/modules/one_line_from_file.rb', line 28

def get_all_lines
  @fresh_lines ||= get_lines_from_file
end

#get_lines_from_fileObject



20
21
22
23
24
25
26
# File 'lib/modules/one_line_from_file.rb', line 20

def get_lines_from_file
  begin
    IO::readlines(LINES_FILE).map { |line| line.chomp }
  rescue Errno::ENOENT
    []
  end
end

#get_unused_linesObject



44
45
46
# File 'lib/modules/one_line_from_file.rb', line 44

def get_unused_lines
  get_all_lines.reject { |line| get_used_lines.include?(line) }
end

#get_used_linesObject



40
41
42
# File 'lib/modules/one_line_from_file.rb', line 40

def get_used_lines
  @used_lines ||=  get_used_lines_from_file
end

#get_used_lines_from_fileObject



32
33
34
35
36
37
38
# File 'lib/modules/one_line_from_file.rb', line 32

def get_used_lines_from_file
  begin
    IO::readlines(USED_LINES_FILE).map { |line| line.chomp }
  rescue Errno::ENOENT
    []
  end
end

#load_linesObject



48
49
50
# File 'lib/modules/one_line_from_file.rb', line 48

def load_lines
  add_lines(*get_unused_lines)
end

#load_tweetsObject



16
17
18
# File 'lib/modules/one_line_from_file.rb', line 16

def load_tweets
  load_lines
end

#nextObject



66
67
68
# File 'lib/modules/one_line_from_file.rb', line 66

def next
  @lines.delete_at(pick)
end

#pickObject



56
57
58
# File 'lib/modules/one_line_from_file.rb', line 56

def pick
  rand(lines.length)
end

#resetObject



70
71
72
73
74
# File 'lib/modules/one_line_from_file.rb', line 70

def reset
  File.delete(USED_LINES_FILE) rescue nil
  @used_lines = nil
  load_lines
end

#setup_for_moduleObject



12
13
14
# File 'lib/modules/one_line_from_file.rb', line 12

def setup_for_module
  @lines = []
end

#store(line) ⇒ Object



60
61
62
63
64
# File 'lib/modules/one_line_from_file.rb', line 60

def store(line)
  open(USED_LINES_FILE, "a") do |file|
    file.write(line + "\n")
  end
end