Class: Moneymanager::Archiver

Inherits:
Object
  • Object
show all
Defined in:
lib/moneymanager/archiver.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeArchiver

Returns a new instance of Archiver.



18
19
20
21
22
23
24
# File 'lib/moneymanager/archiver.rb', line 18

def initialize
  if File.exist? Archiver.archive_path
    @db = YAML.load_file(Archiver.archive_path)
  else
    @db = Archiver.empty_archive
  end
end

Class Method Details

.archive_pathObject



5
6
7
# File 'lib/moneymanager/archiver.rb', line 5

def self.archive_path
  File.join(Dir.home, '.moneymanager')
end

.empty_archiveObject



9
10
11
12
# File 'lib/moneymanager/archiver.rb', line 9

def self.empty_archive
  { entries: [],
    tags: [] }
end

.resetObject



14
15
16
# File 'lib/moneymanager/archiver.rb', line 14

def self.reset
  File.write(Archiver.archive_path, Archiver.empty_archive.to_yaml)
end

Instance Method Details

#all_entriesObject



49
50
51
# File 'lib/moneymanager/archiver.rb', line 49

def all_entries
  @db[:entries].sort_by(&:date)
end

#saveObject



26
27
28
# File 'lib/moneymanager/archiver.rb', line 26

def save
  File.write(Archiver.archive_path, @db.to_yaml)
end

#store(entries) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/moneymanager/archiver.rb', line 30

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) ⇒ Object



57
58
59
60
# File 'lib/moneymanager/archiver.rb', line 57

def store_tag(tag)
  @db[:tags] << tag
  save
end

#tagsObject



53
54
55
# File 'lib/moneymanager/archiver.rb', line 53

def tags
  @db[:tags]
end

#update(entry) ⇒ Object



43
44
45
46
47
# File 'lib/moneymanager/archiver.rb', line 43

def update(entry)
  @db[:entries].delete_if { |obj| obj.digest == entry.digest }
  @db[:entries] << entry
  save
end