ledger_web 1.4.3 → 1.4.4

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.
data/bin/ledger_web CHANGED
@@ -3,6 +3,8 @@
3
3
  require 'rubygems'
4
4
  require 'optparse'
5
5
 
6
+ STDOUT.sync = true
7
+
6
8
  begin
7
9
  require 'ledger_web'
8
10
  rescue LoadError => e
@@ -27,5 +29,7 @@ OptionParser.new do |opts|
27
29
  end
28
30
  end.parse!
29
31
 
32
+ LedgerWeb::Database.connect
33
+
30
34
  LedgerWeb::Watcher.run!
31
35
  LedgerWeb::Application.run!(:port => LedgerWeb::Config.instance.get(:port))
@@ -11,8 +11,6 @@ module LedgerWeb
11
11
  set :views, LedgerWeb::Config.instance.get(:report_directories) + [File.join(File.dirname(__FILE__), 'views')]
12
12
  set :reload_templates, true
13
13
 
14
- LedgerWeb::Database.connect
15
-
16
14
  helpers Sinatra::Capture
17
15
  helpers LedgerWeb::Helpers
18
16
 
data/lib/ledger_web/db.rb CHANGED
@@ -32,15 +32,15 @@ module LedgerWeb
32
32
  ledger_bin_path = LedgerWeb::Config.instance.get :ledger_bin_path
33
33
  ledger_file = LedgerWeb::Config.instance.get :ledger_file
34
34
  ledger_format = LedgerWeb::Config.instance.get :ledger_format
35
-
36
- print " dumping ledger to file...."
35
+
36
+ puts "Dumping ledger to file..."
37
37
  file = Tempfile.new('ledger')
38
38
  system "#{ledger_bin_path} -f #{ledger_file} --format='#{ledger_format}' reg > #{file.path}"
39
39
  replaced_file = Tempfile.new('ledger')
40
40
  replaced_file.write(file.read.gsub('\"', '""'))
41
41
  replaced_file.flush
42
42
 
43
- puts "done"
43
+ puts "Dump finished"
44
44
  return replaced_file
45
45
  end
46
46
 
@@ -49,12 +49,12 @@ module LedgerWeb
49
49
  @@db.transaction do
50
50
 
51
51
  LedgerWeb::Config.instance.run_hooks(:before_load, @@db)
52
-
53
- print " clearing ledger table...."
52
+
53
+ puts "Clearing ledger table...."
54
54
  @@db["DELETE FROM ledger"].delete
55
- puts "done"
55
+ puts "Done clearing ledger table"
56
56
 
57
- print " loading into database...."
57
+ puts "Loading into database...."
58
58
 
59
59
  CSV.foreach(file.path) do |row|
60
60
  counter += 1
@@ -75,21 +75,31 @@ module LedgerWeb
75
75
 
76
76
  row[:xtn_month] = xtn_date.strftime('%Y/%m/01')
77
77
  row[:xtn_year] = xtn_date.strftime('%Y/01/01')
78
- row[:cost] = row[:cost].gsub(/[^\d\.-]/, '')
78
+ row[:cost] = parse_cost(row[:cost])
79
79
 
80
80
  row = LedgerWeb::Config.instance.run_hooks(:before_insert_row, row)
81
81
  @@db[:ledger].insert(row)
82
82
  LedgerWeb::Config.instance.run_hooks(:after_insert_row, row)
83
83
  end
84
84
 
85
- puts " Running after_load hooks"
85
+ puts "Running after_load hooks"
86
86
  LedgerWeb::Config.instance.run_hooks(:after_load, @@db)
87
87
  end
88
- puts " analyzing ledger table"
88
+ puts "Analyzing ledger table"
89
89
  @@db.fetch('VACUUM ANALYZE ledger').all
90
- puts "done"
90
+ puts "Done!"
91
91
  counter
92
92
  end
93
+
94
+ def self.parse_cost(cost)
95
+ match = cost.match(/([\d\.-]+) (.+) {(.+)} \[(.+)\]/)
96
+ if match
97
+ amount = match[1].to_f
98
+ price = match[3].gsub(/[^\d\.-]/, '').to_f
99
+ return price * amount
100
+ end
101
+ cost.gsub(/[^\d\.-]/, '')
102
+ end
93
103
 
94
104
  def self.load_prices
95
105
  query = <<HERE
@@ -113,7 +123,7 @@ module LedgerWeb
113
123
  ) x
114
124
  HERE
115
125
 
116
- puts "Deleting prices"
126
+ puts " Deleting prices"
117
127
  @@db["DELETE FROM prices"].delete
118
128
 
119
129
  rows = @@db.fetch(query)
@@ -1,3 +1,3 @@
1
1
  module LedgerWeb
2
- VERSION = '1.4.3'
2
+ VERSION = '1.4.4'
3
3
  end
@@ -15,11 +15,12 @@ module LedgerWeb
15
15
  @@dw.interval = LedgerWeb::Config.instance.get :watch_interval
16
16
  @@dw.stable = LedgerWeb::Config.instance.get :watch_stable_count
17
17
 
18
+ LedgerWeb::Database.connect
19
+
18
20
  @@dw.add_observer do |*args|
19
21
  args.each do |event|
20
22
  if event[0] == :stable
21
23
  puts "Loading database"
22
- LedgerWeb::Database.connect
23
24
  LedgerWeb::Database.run_migrations
24
25
  file = LedgerWeb::Database.dump_ledger_to_csv
25
26
  count = LedgerWeb::Database.load_database(file)
@@ -218,5 +218,31 @@ describe LedgerWeb::Database do
218
218
  ])
219
219
 
220
220
  end
221
+
222
+ it "should load the database from csv with a complicated cost string" do
223
+ count = 0
224
+ File.open(fixture('complex_costs')) do |file|
225
+ count = LedgerWeb::Database.load_database(file)
226
+ end
227
+ count.should eq(1)
228
+
229
+ convert_bd_to_string(LedgerWeb::Database.handle[:ledger].all()).should eq([
230
+ {
231
+ :xtn_date => Date.new(2011,8,30),
232
+ :checknum => nil,
233
+ :note => 'Tttttttttt Pagamento',
234
+ :account => 'Liabilities:Funds:Retirement Plan',
235
+ :commodity => '"B PGBL F10"',
236
+ :amount => "103.59",
237
+ :tags => '',
238
+ :xtn_month => Date.new(2011,8,1),
239
+ :xtn_year => Date.new(2011,1,1),
240
+ :virtual => true,
241
+ :xtn_id => 7288,
242
+ :cleared => false,
243
+ :cost => "442.33"
244
+ },
245
+ ])
246
+ end
221
247
  end
222
248
  end
@@ -0,0 +1 @@
1
+ "7288","2011/08/30","Tttttttttt Pagamento","Liabilities:Funds:Retirement Plan","""B PGBL F10""","103.59","false","true","","103.59 ""B PGBL F10"" {R$4.2701032918} [2011/08/30]"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ledger_web
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.4.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-18 00:00:00.000000000Z
12
+ date: 2012-03-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pg
@@ -297,6 +297,7 @@ files:
297
297
  - lib/ledger_web/watcher.rb
298
298
  - test/config_spec.rb
299
299
  - test/database_load_spec.rb
300
+ - test/fixtures/complex_costs.dat
300
301
  - test/fixtures/quoted.dat
301
302
  - test/fixtures/small.dat
302
303
  - test/report_spec.rb
@@ -329,6 +330,7 @@ summary: A web-based, sql-backed front-end for the Ledger command-line accountin
329
330
  test_files:
330
331
  - test/config_spec.rb
331
332
  - test/database_load_spec.rb
333
+ - test/fixtures/complex_costs.dat
332
334
  - test/fixtures/quoted.dat
333
335
  - test/fixtures/small.dat
334
336
  - test/report_spec.rb