journala 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: