journala 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "journala"
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Robert Kaufman"]
@@ -5,3 +5,5 @@ require 'journala/journal'
5
5
  require 'journala/entry'
6
6
  require 'journala/row'
7
7
  require 'journala/value'
8
+
9
+ require 'journala/parsers'
@@ -48,7 +48,7 @@ module Journala
48
48
  other_journal.entries.each do |entry|
49
49
  transaction_id = entry.description.match(/\(transaction id: (\d+)\)/)[1]
50
50
 
51
- if @entries.none? {|e| e.description.match(/\(transaction id: \d+\)/) }
51
+ if @entries.none? {|e| e.description.match(/\(transaction id: #{transaction_id}\)/) }
52
52
  @entries << entry
53
53
  end
54
54
  end
@@ -60,6 +60,7 @@ module Journala
60
60
  file = File.open(filename, 'r')
61
61
 
62
62
  journal = Journal.new
63
+ current_entry = nil
63
64
 
64
65
  file.each_line do |line|
65
66
  if line =~ /^$/
@@ -69,25 +70,28 @@ module Journala
69
70
  confirmed = $2
70
71
  description = $3
71
72
 
72
- entry = Entry.new(:date => date, :confirmed => confirmed.present?, :description => description)
73
+ current_entry = Entry.new(:date => date, :confirmed => confirmed.present?, :description => description)
73
74
 
74
- journal.entries << entry
75
+ journal.entries << current_entry
75
76
 
76
77
  # row with amount
77
- elsif line =~ /\s+(.*)\s{2,}\$(.*)/
78
- row = Row.new(:account => $1, :amount => $2)
79
- journal.entries.last.rows << row
78
+ elsif line =~ /\s+(.*)\s{2,}(-?)\$?([\d\.]+)/
79
+ row = Row.new(:account => $1, :amount => $2.blank? ? $3 : (0.0 - $3.to_f))
80
+ current_entry.rows << row
80
81
 
81
82
  # row without amount
82
83
  elsif line =~ /\s+(.*)/
83
- other_amount = journal.entries.last.rows.first.amount
84
+ # already have 2 rows and try to do one without an amount? sorry, that's not allowed
85
+ raise "Must specify amount for each row for entries with more than 2 rows" if current_entry.rows.count >= 2
86
+
87
+ other_amount = current_entry.rows.first.amount
84
88
  row = Row.new(:account => $1, :amount => 0-other_amount)
85
- journal.entries.last.rows << row
89
+ current_entry.rows << row
86
90
  end
87
91
 
88
92
  end
89
93
 
90
- f.close
94
+ file.close
91
95
 
92
96
  journal
93
97
  end
@@ -18,7 +18,7 @@ module Journala
18
18
  end
19
19
 
20
20
  def to_s
21
- spaces = ' ' * (70 - @account.length - @amount.length)
21
+ spaces = ' ' * [(70 - @account.length - @amount.length), 5].max
22
22
  " #{@account}#{spaces}#{@amount}"
23
23
  end
24
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: journala
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-25 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &70249718265780 !ruby/object:Gem::Requirement
16
+ requirement: &70099074010140 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70249718265780
24
+ version_requirements: *70099074010140
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: jeweler
27
- requirement: &70249718265300 !ruby/object:Gem::Requirement
27
+ requirement: &70099074009560 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70249718265300
35
+ version_requirements: *70099074009560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rcov
38
- requirement: &70249718264820 !ruby/object:Gem::Requirement
38
+ requirement: &70099074008780 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70249718264820
46
+ version_requirements: *70099074008780
47
47
  description: a library that reads and write ledger format ledger files
48
48
  email: rob.m.kaufman@gmail.com
49
49
  executables: []
@@ -75,9 +75,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
- segments:
79
- - 0
80
- hash: -389571128459184875
81
78
  required_rubygems_version: !ruby/object:Gem::Requirement
82
79
  none: false
83
80
  requirements:
@@ -91,3 +88,4 @@ signing_key:
91
88
  specification_version: 3
92
89
  summary: inspired by ledger
93
90
  test_files: []
91
+ has_rdoc: