class Cronbox::DataFile
Attributes
config[RW]
entries[RW]
Public Class Methods
new(file)
click to toggle source
# File lib/cronbox/data_file.rb, line 5 def initialize(file) @file = file reset reload if File.exist?(@file) end
Public Instance Methods
add_entry(entry)
click to toggle source
# File lib/cronbox/data_file.rb, line 47 def add_entry(entry) entry['id'] = next_id @entries.push entry end
del_entry(entry)
click to toggle source
# File lib/cronbox/data_file.rb, line 52 def del_entry(entry) @entries.delete(entry) end
empty!()
click to toggle source
# File lib/cronbox/data_file.rb, line 28 def empty! reset save! end
find_entry(query)
click to toggle source
# File lib/cronbox/data_file.rb, line 35 def find_entry(query) k = query.keys.first v = query[k] return nil unless v @entries.each do |e| if e[k.to_s] == v return e end end nil end
reload()
click to toggle source
# File lib/cronbox/data_file.rb, line 16 def reload import_text(File.read(@file)) end
reset()
click to toggle source
# File lib/cronbox/data_file.rb, line 11 def reset @config ||= Hash.new @entries = Array.new end
save!()
click to toggle source
# File lib/cronbox/data_file.rb, line 20 def save! save_dir = File.dirname(@file) unless Dir.exist?(save_dir) raise "Directory does not exist, #{save_dir}" end File.open(@file, 'w') { |file| file.write(export_text) } end
Protected Instance Methods
export_text()
click to toggle source
# File lib/cronbox/data_file.rb, line 64 def export_text JSON.pretty_generate({ :'config' => @config, :'entries' => @entries.sort_by { |e| e['id'] } }) end
import_text(input)
click to toggle source
# File lib/cronbox/data_file.rb, line 58 def import_text(input) data = JSON.parse(input) @config = data['config'] || Hash.new @entries = data['entries'] || Array.new end
next_id()
click to toggle source
# File lib/cronbox/data_file.rb, line 71 def next_id ni = 1 indexes = @entries.map { |e| e['id'].to_i } indexes.sort.each do |i| if i > ni return ni elsif i == ni ni += 1 end end ni end