class ReminderFile
Attributes
delay[R]
filename[R]
Public Class Methods
new(filename, delay=0..0)
click to toggle source
# File lib/forgetful/extensions/csv/reminder_file.rb, line 6 def initialize(filename, delay=0..0) @filename = filename @delay = delay end
Public Instance Methods
read()
click to toggle source
# File lib/forgetful/extensions/csv/reminder_file.rb, line 11 def read File.open(filename) do |file| parse_csv(file) end end
write(reminders)
click to toggle source
# File lib/forgetful/extensions/csv/reminder_file.rb, line 17 def write(reminders) data = CSV.generate do |csv| reminders.each do |reminder| csv << reminder.to_csv end end File.open(filename, "w") do |file| file.write(data) end end
Private Instance Methods
parse_csv(io)
click to toggle source
# File lib/forgetful/extensions/csv/reminder_file.rb, line 30 def parse_csv(io) converters = [lambda { |question| question }, lambda { |answer| answer }, lambda { |due_on| Date.parse(due_on) }, lambda { |history| history.scan(/./).map { |x| x.to_i } }] CSV.parse(io, :skip_blanks => true).map do |list| list = list.zip(converters).map { |col, converter| converter[col] } list << Date.today + rand_from_range(delay) if list.length == 2 # missing date Reminder.new(*list) end end
rand_from_range(range)
click to toggle source
# File lib/forgetful/extensions/csv/reminder_file.rb, line 43 def rand_from_range(range) if RUBY_VERSION < '1.9' (range.min + (range.max - range.min + 1) * rand).floor else Random.new.rand(range) end end