Class: Moneymanager::Archiver
- Inherits:
-
Object
- Object
- Moneymanager::Archiver
- Defined in:
- lib/moneymanager/archiver.rb
Class Method Summary collapse
Instance Method Summary collapse
- #all_entries ⇒ Object
-
#initialize ⇒ Archiver
constructor
A new instance of Archiver.
- #save ⇒ Object
- #store(entries) ⇒ Object
- #store_tag(tag) ⇒ Object
- #tags ⇒ Object
- #update(entry) ⇒ Object
Constructor Details
#initialize ⇒ Archiver
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_path ⇒ Object
5 6 7 |
# File 'lib/moneymanager/archiver.rb', line 5 def self.archive_path File.join(Dir.home, '.moneymanager') end |
.empty_archive ⇒ Object
9 10 11 12 |
# File 'lib/moneymanager/archiver.rb', line 9 def self.empty_archive { entries: [], tags: [] } end |
.reset ⇒ Object
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_entries ⇒ Object
49 50 51 |
# File 'lib/moneymanager/archiver.rb', line 49 def all_entries @db[:entries].sort_by(&:date) end |
#save ⇒ Object
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 |
#tags ⇒ Object
53 54 55 |
# File 'lib/moneymanager/archiver.rb', line 53 def @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 |