class Moneymanager::Archiver
Attributes
home_folder[RW]
Public Class Methods
empty_archive()
click to toggle source
# File lib/moneymanager/archiver.rb, line 21 def self.empty_archive { entries: [], tags: [] } end
new(home_folder = Dir.home)
click to toggle source
# File lib/moneymanager/archiver.rb, line 34 def initialize(home_folder = Dir.home) self.home_folder = home_folder FileUtils.mkdir_p(base_path) @db = if File.exist? archive_path YAML.load_file(archive_path) else Archiver.empty_archive end end
reset()
click to toggle source
# File lib/moneymanager/archiver.rb, line 26 def self.reset File.write(Archiver.archive_path, Archiver.empty_archive.to_yaml) end
Public Instance Methods
all_bank_transfers()
click to toggle source
# File lib/moneymanager/archiver.rb, line 78 def all_bank_transfers @db[:entries].sort_by(&:date).select(&:bank_transfer) end
all_entries()
click to toggle source
# File lib/moneymanager/archiver.rb, line 74 def all_entries @db[:entries].sort_by(&:date) end
archive_path()
click to toggle source
# File lib/moneymanager/archiver.rb, line 12 def archive_path File.join(base_path, 'archive') end
backup()
click to toggle source
# File lib/moneymanager/archiver.rb, line 30 def backup File.write(backup_path, @db.to_yaml) end
backup_path()
click to toggle source
# File lib/moneymanager/archiver.rb, line 16 def backup_path date_filename = Time.now.to_i.to_s File.join(base_path, date_filename) end
base_path()
click to toggle source
# File lib/moneymanager/archiver.rb, line 8 def base_path File.join(home_folder, '.moneymanager') end
delete(entry)
click to toggle source
# File lib/moneymanager/archiver.rb, line 68 def delete(entry) puts entry @db[:entries].delete_if { |obj| obj.digest == entry.digest } save end
save()
click to toggle source
# File lib/moneymanager/archiver.rb, line 45 def save File.write(archive_path, @db.to_yaml) end
store(entries)
click to toggle source
# File lib/moneymanager/archiver.rb, line 49 def store(entries) previous_digest = all_entries.map(&:digest) to_insert = entries.reject do |entry| previous_digest.include?(entry.digest) end @db[:entries].concat(to_insert) save puts "Parsed: #{entries.count}" puts "Skipped: #{entries.count - to_insert.count}" puts "Inserted: #{to_insert.count}" end
store_tag(tag)
click to toggle source
# File lib/moneymanager/archiver.rb, line 86 def store_tag(tag) @db[:tags] << tag save end
update(entry)
click to toggle source
# File lib/moneymanager/archiver.rb, line 62 def update(entry) @db[:entries].delete_if { |obj| obj.digest == entry.digest } @db[:entries] << entry save end