commerzbank-csv4gnucash 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d5b44c2c2a15bd30f3ee6ae4cd739bb8a4b12b0c
4
- data.tar.gz: 1974674b1d165624339188b75a3b332e117655de
3
+ metadata.gz: c33752160b447765acf716fba8968d5bc9f9ae6b
4
+ data.tar.gz: 4a3f9da9a0a39b362aac4ac6416364dbea628d35
5
5
  SHA512:
6
- metadata.gz: 3620593f1b8a4068cc46625ab1b3f53da8b36635fa9c4ac411d7cc31189e8b35bc5ff2dc084aa38911d4493d97eaa8edffb86c843d874862491169aca95a5b67
7
- data.tar.gz: 00c73f3467ab03a1f62267822ddea984823624ab87ece1df8915f297ad0eccaef957b8401d8fd44b4756569a1acad4e4d036e00e20df6cca65551e2720f9ee51
6
+ metadata.gz: b74948bcb21a1b86647599f87a8cec2160b05a41d1d2441b2f414df81ed461c7651e4a5eeb48bc934f3acccd87cbeafea29994eba863736c151cafa26b2eee7e
7
+ data.tar.gz: a6479f957152b6cff8f6f8d6304b346d9d9c4548c89f3702b208d18f2dd6fcb1e6c27710e0d96a811024a9e72c655d9d1c208e83ae8e2588326d729ab1094556
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
16
16
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
17
17
  # delete this section to allow pushing this gem to any host.
18
18
  if spec.respond_to?(:metadata)
19
- spec.metadata['allowed_push_host'] = "https://rubygems.org"
19
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
20
20
  else
21
21
  raise 'RubyGems 2.0 or newer is required to protect against' \
22
22
  ' public gem pushes.'
@@ -1,5 +1,5 @@
1
1
  module Commerzbank
2
2
  module Csv4gnucash
3
- VERSION = '0.1.0'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
5
  end
@@ -1,20 +1,67 @@
1
1
  require 'commerzbank/csv4gnucash/version'
2
2
  require 'csv'
3
+ require 'date'
3
4
  require 'pp'
4
5
 
6
+ CSV::Converters[:foo] =
7
+ lambda do |f|
8
+ if f =~ /^\d{1,2}\.\d{1,2}\.\d{4}$/
9
+ Date.new(*f.split('.').map(&:to_i).reverse)
10
+ else
11
+ f
12
+ end
13
+ end
14
+
15
+ CSV::Converters[:bar] =
16
+ lambda do |f|
17
+ if f =~ /^-?[\d,.]+$/
18
+ # TODO: avoid floats
19
+ f.tr(',', '.').to_f
20
+ else
21
+ f
22
+ end
23
+ end
24
+
25
+ # Change Date format
26
+ class Date
27
+ def to_s
28
+ strftime('%Y%m%d')
29
+ end
30
+ end
31
+
32
+ # Change Float format
33
+ class Float
34
+ def to_s
35
+ format('%.2f', self)
36
+ end
37
+ end
38
+
5
39
  module Commerzbank
6
40
  # Csv4gnucash adopts Commerzbank CSV for GnuCash
7
41
  module Csv4gnucash
8
- def self.main(input)
9
- input.readline
10
- begin
11
- 2.times do
12
- c = CSV.parse(input.readline, col_sep: ';')[0][4].tr(',', '.').to_f
13
- puts "20160422,,DANKE,,Commerzbank,#{format('%.2f', c)},,,"\
14
- '30041254,DE40432432456544324320'
42
+ def self.convert(row)
43
+ conv = []
44
+ conv << row[:buchungstag]
45
+ conv << nil
46
+ conv << format('%s [%s]', row[:buchungstext], row[:umsatzart])
47
+ conv << nil
48
+ conv << 'Commerzbank'
49
+ conv << row[:betrag]
50
+ conv << nil
51
+ conv << nil
52
+ conv
53
+ end
54
+
55
+ def self.main(_input)
56
+ CSV($stdout) do |out|
57
+ CSV.new(ARGF,
58
+ col_sep: ';',
59
+ headers: true,
60
+ header_converters: :symbol,
61
+ converters: [:foo, :bar]
62
+ ).each do |row|
63
+ out << convert(row)
15
64
  end
16
- rescue EOFError => e
17
- puts e
18
65
  end
19
66
  end
20
67
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commerzbank-csv4gnucash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kilian Sprotte