salt-parser 0.0.1

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.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +1 -0
  4. data/Gemfile +15 -0
  5. data/Gemfile.lock +88 -0
  6. data/README.rdoc +39 -0
  7. data/Rakefile +7 -0
  8. data/lib/ofx/account.rb +28 -0
  9. data/lib/ofx/accounts.rb +9 -0
  10. data/lib/ofx/balance.rb +15 -0
  11. data/lib/ofx/builder.rb +61 -0
  12. data/lib/ofx/dependencies.rb +13 -0
  13. data/lib/ofx/parser/base.rb +366 -0
  14. data/lib/ofx/parser/ofx102.rb +28 -0
  15. data/lib/ofx/parser/ofx211.rb +21 -0
  16. data/lib/ofx/sign_on.rb +18 -0
  17. data/lib/ofx/transaction.rb +28 -0
  18. data/lib/qif/account.rb +19 -0
  19. data/lib/qif/accounts.rb +54 -0
  20. data/lib/qif/builder.rb +37 -0
  21. data/lib/qif/dependencies.rb +8 -0
  22. data/lib/qif/parser.rb +68 -0
  23. data/lib/qif/transaction.rb +28 -0
  24. data/lib/salt-parser/accounts.rb +11 -0
  25. data/lib/salt-parser/base.rb +19 -0
  26. data/lib/salt-parser/builder.rb +24 -0
  27. data/lib/salt-parser/errors.rb +14 -0
  28. data/lib/salt-parser/version.rb +8 -0
  29. data/salt-parser.gemspec +24 -0
  30. data/spec/ofx/account_spec.rb +97 -0
  31. data/spec/ofx/accounts_response_spec.rb +45 -0
  32. data/spec/ofx/accounts_spec.rb +34 -0
  33. data/spec/ofx/balance_spec.rb +32 -0
  34. data/spec/ofx/builder_spec.rb +136 -0
  35. data/spec/ofx/error_request_spec.rb +37 -0
  36. data/spec/ofx/fixtures/accounts_partial.ofx +52 -0
  37. data/spec/ofx/fixtures/accounts_request.ofx +11 -0
  38. data/spec/ofx/fixtures/accounts_response.ofx +109 -0
  39. data/spec/ofx/fixtures/avatar.gif +0 -0
  40. data/spec/ofx/fixtures/bb.ofx +700 -0
  41. data/spec/ofx/fixtures/credit_card_response.ofx +52 -0
  42. data/spec/ofx/fixtures/creditcard.ofx +79 -0
  43. data/spec/ofx/fixtures/creditcard_transactions_request.ofx +11 -0
  44. data/spec/ofx/fixtures/creditcards_partial.ofx +85 -0
  45. data/spec/ofx/fixtures/date_missing.ofx +73 -0
  46. data/spec/ofx/fixtures/empty_balance.ofx +44 -0
  47. data/spec/ofx/fixtures/invalid_version.ofx +308 -0
  48. data/spec/ofx/fixtures/investment_transactions_response.ofx +108 -0
  49. data/spec/ofx/fixtures/investment_transactions_response2.ofx +200 -0
  50. data/spec/ofx/fixtures/investments_with_mkval.ofx +99 -0
  51. data/spec/ofx/fixtures/missing_headers.ofx +47 -0
  52. data/spec/ofx/fixtures/mixed_accountinfo_response.ofx +58 -0
  53. data/spec/ofx/fixtures/ms_money.ofx +52 -0
  54. data/spec/ofx/fixtures/request_error.ofx +39 -0
  55. data/spec/ofx/fixtures/request_error2.ofx +39 -0
  56. data/spec/ofx/fixtures/request_error3.ofx +36 -0
  57. data/spec/ofx/fixtures/sample_examples/sample_401K_loan.qfx +651 -0
  58. data/spec/ofx/fixtures/sample_examples/sample_banking.qbo +258 -0
  59. data/spec/ofx/fixtures/sample_examples/sample_banking.qfx +258 -0
  60. data/spec/ofx/fixtures/sample_examples/sample_banking_multiacct.qfx +284 -0
  61. data/spec/ofx/fixtures/sample_examples/sample_credit_card.qfx +257 -0
  62. data/spec/ofx/fixtures/sample_examples/sample_investment.qfx +654 -0
  63. data/spec/ofx/fixtures/transactions_empty.ofx +60 -0
  64. data/spec/ofx/fixtures/utf8.ofx +65 -0
  65. data/spec/ofx/fixtures/v102.ofx +314 -0
  66. data/spec/ofx/fixtures/v202.ofx +22 -0
  67. data/spec/ofx/fixtures/v211.ofx +85 -0
  68. data/spec/ofx/investment_accounts_spec.rb +70 -0
  69. data/spec/ofx/ofx102_spec.rb +44 -0
  70. data/spec/ofx/ofx211_spec.rb +68 -0
  71. data/spec/ofx/ofx_parser_spec.rb +100 -0
  72. data/spec/ofx/sign_on_spec.rb +49 -0
  73. data/spec/ofx/transaction_spec.rb +157 -0
  74. data/spec/qif/account_spec.rb +42 -0
  75. data/spec/qif/fixtures/3_records_ddmmyy.qif +19 -0
  76. data/spec/qif/fixtures/3_records_ddmmyyyy.qif +19 -0
  77. data/spec/qif/fixtures/3_records_dmyy.qif +19 -0
  78. data/spec/qif/fixtures/3_records_invalid_header.qif +20 -0
  79. data/spec/qif/fixtures/3_records_mdyy.qif +19 -0
  80. data/spec/qif/fixtures/3_records_mmddyy.qif +19 -0
  81. data/spec/qif/fixtures/3_records_mmddyyyy.qif +19 -0
  82. data/spec/qif/fixtures/3_records_spaced.qif +19 -0
  83. data/spec/qif/fixtures/bank_account.qif +19 -0
  84. data/spec/qif/fixtures/empty_body.qif +1 -0
  85. data/spec/qif/fixtures/empty_header.qif +18 -0
  86. data/spec/qif/fixtures/incompatible_date_formats.qif +13 -0
  87. data/spec/qif/fixtures/invalid_date_format.qif +7 -0
  88. data/spec/qif/fixtures/not_a_QIF_file.txt +3 -0
  89. data/spec/qif/fixtures/quicken_non_investement_account.qif +30 -0
  90. data/spec/qif/fixtures/unknown_account.qif +20 -0
  91. data/spec/qif/fixtures/various_date_format.qif +19 -0
  92. data/spec/qif/fixtures/with_categories_list.qif +8669 -0
  93. data/spec/qif/parser_spec.rb +156 -0
  94. data/spec/qif/transaction_spec.rb +18 -0
  95. data/spec/spec_helper.rb +37 -0
  96. data/spec/support/fixture.rb +9 -0
  97. metadata +208 -0
@@ -0,0 +1,156 @@
1
+ require "spec_helper"
2
+
3
+ shared_examples_for "3 record files" do
4
+ it "should not have any errors" do
5
+ expect { parser }.not_to raise_error
6
+ end
7
+
8
+ it "should have 3 records" do
9
+ transactions.size.should == 3
10
+ end
11
+
12
+ it "should have a debit of $10 on the 1st of January 2010" do
13
+ transaction = transactions[0]
14
+ transaction.date.should == "2010-01-01"
15
+ transaction.category.should == "Debit"
16
+ transaction.amount.should == "-10.00"
17
+ transaction.payee.should == "Description"
18
+ transaction.memo.should == "Reference"
19
+ end
20
+
21
+ it "should have a debit of $20 on the 1st of June 1020" do
22
+ transaction = transactions[1]
23
+ transaction.date.should == "2010-06-01"
24
+ transaction.category.should == "Debit"
25
+ transaction.amount.should == "-20.00"
26
+ transaction.payee.should == "Description"
27
+ transaction.memo.should == "Reference"
28
+ end
29
+
30
+ it "should have a credit of $30 on the 29th of December 2010" do
31
+ transaction = transactions[2]
32
+ transaction.date.should == "2010-12-29"
33
+ transaction.category.should == "Credit"
34
+ transaction.amount.should == "30.00"
35
+ transaction.payee.should == "Description"
36
+ transaction.memo.should == "Reference"
37
+ end
38
+ end
39
+
40
+ describe SaltParser::Qif::Builder do
41
+ {
42
+ "dd/mm/yy" => "%d/%m/%y",
43
+ "dd/mm/yyyy" => "%d/%m/%Y",
44
+ "d/m/yy" => "%d/%m/%y",
45
+ "m/d/yy" => "%m/%d/%y",
46
+ "mm/dd/yy" => "%m/%d/%y",
47
+ "mm/dd/yyyy" => "%m/%d/%Y"
48
+ }.each do |name, format|
49
+ context "when format is #{format}" do
50
+ it_behaves_like "3 record files" do
51
+ let(:parser) { SaltParser::Qif::Builder.new("spec/qif/fixtures/3_records_%s.qif" % name.gsub("/", ""), format).parser }
52
+ let(:transactions) { parser.accounts.first.transactions }
53
+ end
54
+ end
55
+ end
56
+
57
+ context "when format has spaces" do
58
+ it_behaves_like "3 record files" do
59
+ let(:parser) { SaltParser::Qif::Builder.new("spec/qif/fixtures/3_records_spaced.qif").parser }
60
+ let(:transactions) { parser.accounts.first.transactions }
61
+ end
62
+ end
63
+
64
+ context "it should still work when the record header is followed by an invalid transaction terminator" do
65
+ it_behaves_like "3 record files" do
66
+ let(:parser) { SaltParser::Qif::Builder.new("spec/qif/fixtures/3_records_invalid_header.qif").parser }
67
+ let(:transactions) { parser.accounts.first.transactions }
68
+ end
69
+ end
70
+
71
+ context "when there are various date formats" do
72
+ let(:parser) { SaltParser::Qif::Builder.new("spec/qif/fixtures/various_date_format.qif", "%m/%d/%y").parser }
73
+ let(:transactions) { parser.accounts.first.transactions }
74
+
75
+ it "should still work" do
76
+ transactions.size.should == 3
77
+ transactions.map(&:date).should == ["2010-12-13", "2010-01-01", "2006-12-25"]
78
+ end
79
+ end
80
+
81
+ context "when file contains wrong date" do
82
+ it "should fail" do
83
+ expect {
84
+ SaltParser::Qif::Builder.new("spec/qif/fixtures/invalid_date_format.qif").parser
85
+ }.to raise_error(SaltParser::Error::UnsupportedDateFormat)
86
+ end
87
+ end
88
+
89
+ context "file with unknown account type" do
90
+ let(:parser) { SaltParser::Qif::Builder.new("spec/qif/fixtures/unknown_account.qif", "%m/%d/%y").parser }
91
+ let(:transactions) { parser.accounts.first.transactions }
92
+
93
+ it "should still work" do
94
+ parser.accounts.first.name.should == "account"
95
+ parser.accounts.first.type.should == "account"
96
+ transactions.size.should == 2
97
+ end
98
+ end
99
+
100
+ context "with categories" do
101
+ let(:parser) { SaltParser::Qif::Builder.new("spec/qif/fixtures/with_categories_list.qif", "%d/%m/%y").parser }
102
+ let(:transactions) { parser.accounts.first.transactions }
103
+
104
+ it "should ignore categories records" do
105
+ parser.accounts.first.name.should == "Bank account"
106
+ parser.accounts.first.type.should == "bank_account"
107
+ transactions.size.should == 1098
108
+ end
109
+ end
110
+
111
+ context "file without header" do
112
+ let(:parser) { SaltParser::Qif::Builder.new("spec/qif/fixtures/empty_header.qif", "%m/%d/%y").parser }
113
+ let(:transactions) { parser.accounts.first.transactions }
114
+
115
+ it "should still work" do
116
+ parser.accounts.first.name.should == "account"
117
+ parser.accounts.first.type.should == "account"
118
+ transactions.size.should == 3
119
+ end
120
+ end
121
+
122
+ context "not a qif format" do
123
+ let(:parser) { SaltParser::Qif::Builder.new("spec/qif/fixtures/not_a_QIF_file.txt").parser }
124
+ let(:transactions) { parser.accounts.first.transactions }
125
+
126
+ it "should still work" do
127
+ parser.accounts.first.name.should == "account"
128
+ parser.accounts.first.type.should == "account"
129
+ transactions.size.should == 0
130
+ end
131
+ end
132
+
133
+ it "should reject the file without valid body" do
134
+ expect{ SaltParser::Qif::Builder.new("spec/qif/fixtures/empty_body.qif").parser }.to raise_error(SaltParser::Error::EmptyFileBody)
135
+ end
136
+
137
+ it "should reject the file with wrong encoding" do
138
+ Kconv.should_receive(:isutf8).and_raise(StandardError)
139
+ expect{ SaltParser::Qif::Builder.new("spec/qif/fixtures/3_records_ddmmyyyy.qif").parser }.to raise_error(SaltParser::Error::InvalidEncoding)
140
+ end
141
+
142
+ it "should reject the file with unparsable date" do
143
+ Chronic.should_receive(:parse).and_return(nil)
144
+ expect{ SaltParser::Qif::Builder.new("spec/qif/fixtures/3_records_ddmmyyyy.qif").parser }.to raise_error(SaltParser::Error::UnsupportedDateFormat)
145
+ end
146
+
147
+ it "should initialize with an IO object" do
148
+ parser = SaltParser::Qif::Builder.new(open("spec/qif/fixtures/3_records_ddmmyyyy.qif")).parser
149
+ parser.accounts.first.transactions.size.should == 3
150
+ end
151
+
152
+ it "should initialize with data in a string" do
153
+ parser = SaltParser::Qif::Builder.new(File.read("spec/qif/fixtures/3_records_ddmmyyyy.qif")).parser
154
+ parser.accounts.first.transactions.size.should == 3
155
+ end
156
+ end
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+
3
+ describe SaltParser::Qif::Account do
4
+ let(:parser) { SaltParser::Qif::Builder.new("spec/qif/fixtures/bank_account.qif", "%d/%m/%Y").parser }
5
+ let(:transaction) { parser.accounts.first.transactions.first }
6
+
7
+ it "parses available data for transaction" do
8
+ transaction.to_hash.should == {
9
+ :date => "2010-01-01",
10
+ :amount => "-1,010.02",
11
+ :status => nil,
12
+ :number => nil,
13
+ :payee => "Description",
14
+ :memo => "Reference",
15
+ :category => "Debit"
16
+ }
17
+ end
18
+ end
@@ -0,0 +1,37 @@
1
+ require "pry-byebug"
2
+ require "simplecov"
3
+ require "timecop"
4
+
5
+ require_relative "support/fixture"
6
+
7
+ SimpleCov.start do
8
+ add_filter "/spec/"
9
+ add_filter "/vendor/"
10
+ end if ENV["COVERAGE"] == "true"
11
+
12
+ require_relative "../lib/salt-parser/base"
13
+
14
+ ActiveSupport::JSON::Encoding.use_standard_json_time_format = true
15
+ ActiveSupport::JSON::Encoding.time_precision = 0
16
+
17
+ RSpec::Matchers.define :have_key do |key|
18
+ match do |hash|
19
+ hash.respond_to?(:keys) &&
20
+ hash.keys.kind_of?(Array) &&
21
+ hash.keys.include?(key)
22
+ end
23
+ end
24
+
25
+ RSpec.configure do |config|
26
+ config.expect_with :rspec do |c|
27
+ c.syntax = [:should, :expect]
28
+ end
29
+
30
+ config.mock_with :rspec do |c|
31
+ c.syntax = [:should, :expect]
32
+ end
33
+
34
+ config.order = "random"
35
+ config.raise_errors_for_deprecations!
36
+ end
37
+
@@ -0,0 +1,9 @@
1
+ class Fixture
2
+
3
+ def self.call(name, format="xml", path=nil)
4
+ group = caller.first.to_s.match(/(?<path>.+)\/(?<spec>[a-z_]+)_spec/)
5
+ file_path = "#{group[:path]}/fixtures/#{name.to_s}.#{format}"
6
+ File.read(file_path)
7
+ end
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,208 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: salt-parser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - saltedge team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Gem for parsing OFX, HBCI, QIF and SWIFT formats.
84
+ email:
85
+ - support@saltedge.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - Gemfile
93
+ - Gemfile.lock
94
+ - README.rdoc
95
+ - Rakefile
96
+ - lib/ofx/account.rb
97
+ - lib/ofx/accounts.rb
98
+ - lib/ofx/balance.rb
99
+ - lib/ofx/builder.rb
100
+ - lib/ofx/dependencies.rb
101
+ - lib/ofx/parser/base.rb
102
+ - lib/ofx/parser/ofx102.rb
103
+ - lib/ofx/parser/ofx211.rb
104
+ - lib/ofx/sign_on.rb
105
+ - lib/ofx/transaction.rb
106
+ - lib/qif/account.rb
107
+ - lib/qif/accounts.rb
108
+ - lib/qif/builder.rb
109
+ - lib/qif/dependencies.rb
110
+ - lib/qif/parser.rb
111
+ - lib/qif/transaction.rb
112
+ - lib/salt-parser/accounts.rb
113
+ - lib/salt-parser/base.rb
114
+ - lib/salt-parser/builder.rb
115
+ - lib/salt-parser/errors.rb
116
+ - lib/salt-parser/version.rb
117
+ - salt-parser.gemspec
118
+ - spec/ofx/account_spec.rb
119
+ - spec/ofx/accounts_response_spec.rb
120
+ - spec/ofx/accounts_spec.rb
121
+ - spec/ofx/balance_spec.rb
122
+ - spec/ofx/builder_spec.rb
123
+ - spec/ofx/error_request_spec.rb
124
+ - spec/ofx/fixtures/accounts_partial.ofx
125
+ - spec/ofx/fixtures/accounts_request.ofx
126
+ - spec/ofx/fixtures/accounts_response.ofx
127
+ - spec/ofx/fixtures/avatar.gif
128
+ - spec/ofx/fixtures/bb.ofx
129
+ - spec/ofx/fixtures/credit_card_response.ofx
130
+ - spec/ofx/fixtures/creditcard.ofx
131
+ - spec/ofx/fixtures/creditcard_transactions_request.ofx
132
+ - spec/ofx/fixtures/creditcards_partial.ofx
133
+ - spec/ofx/fixtures/date_missing.ofx
134
+ - spec/ofx/fixtures/empty_balance.ofx
135
+ - spec/ofx/fixtures/invalid_version.ofx
136
+ - spec/ofx/fixtures/investment_transactions_response.ofx
137
+ - spec/ofx/fixtures/investment_transactions_response2.ofx
138
+ - spec/ofx/fixtures/investments_with_mkval.ofx
139
+ - spec/ofx/fixtures/missing_headers.ofx
140
+ - spec/ofx/fixtures/mixed_accountinfo_response.ofx
141
+ - spec/ofx/fixtures/ms_money.ofx
142
+ - spec/ofx/fixtures/request_error.ofx
143
+ - spec/ofx/fixtures/request_error2.ofx
144
+ - spec/ofx/fixtures/request_error3.ofx
145
+ - spec/ofx/fixtures/sample_examples/sample_401K_loan.qfx
146
+ - spec/ofx/fixtures/sample_examples/sample_banking.qbo
147
+ - spec/ofx/fixtures/sample_examples/sample_banking.qfx
148
+ - spec/ofx/fixtures/sample_examples/sample_banking_multiacct.qfx
149
+ - spec/ofx/fixtures/sample_examples/sample_credit_card.qfx
150
+ - spec/ofx/fixtures/sample_examples/sample_investment.qfx
151
+ - spec/ofx/fixtures/transactions_empty.ofx
152
+ - spec/ofx/fixtures/utf8.ofx
153
+ - spec/ofx/fixtures/v102.ofx
154
+ - spec/ofx/fixtures/v202.ofx
155
+ - spec/ofx/fixtures/v211.ofx
156
+ - spec/ofx/investment_accounts_spec.rb
157
+ - spec/ofx/ofx102_spec.rb
158
+ - spec/ofx/ofx211_spec.rb
159
+ - spec/ofx/ofx_parser_spec.rb
160
+ - spec/ofx/sign_on_spec.rb
161
+ - spec/ofx/transaction_spec.rb
162
+ - spec/qif/account_spec.rb
163
+ - spec/qif/fixtures/3_records_ddmmyy.qif
164
+ - spec/qif/fixtures/3_records_ddmmyyyy.qif
165
+ - spec/qif/fixtures/3_records_dmyy.qif
166
+ - spec/qif/fixtures/3_records_invalid_header.qif
167
+ - spec/qif/fixtures/3_records_mdyy.qif
168
+ - spec/qif/fixtures/3_records_mmddyy.qif
169
+ - spec/qif/fixtures/3_records_mmddyyyy.qif
170
+ - spec/qif/fixtures/3_records_spaced.qif
171
+ - spec/qif/fixtures/bank_account.qif
172
+ - spec/qif/fixtures/empty_body.qif
173
+ - spec/qif/fixtures/empty_header.qif
174
+ - spec/qif/fixtures/incompatible_date_formats.qif
175
+ - spec/qif/fixtures/invalid_date_format.qif
176
+ - spec/qif/fixtures/not_a_QIF_file.txt
177
+ - spec/qif/fixtures/quicken_non_investement_account.qif
178
+ - spec/qif/fixtures/unknown_account.qif
179
+ - spec/qif/fixtures/various_date_format.qif
180
+ - spec/qif/fixtures/with_categories_list.qif
181
+ - spec/qif/parser_spec.rb
182
+ - spec/qif/transaction_spec.rb
183
+ - spec/spec_helper.rb
184
+ - spec/support/fixture.rb
185
+ homepage: http://example.com
186
+ licenses: []
187
+ metadata: {}
188
+ post_install_message:
189
+ rdoc_options: []
190
+ require_paths:
191
+ - lib
192
+ required_ruby_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ required_rubygems_version: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ requirements: []
203
+ rubyforge_project:
204
+ rubygems_version: 2.4.6
205
+ signing_key:
206
+ specification_version: 4
207
+ summary: Gem for parsing OFX, HBCI, QIF and SWIFT formats.
208
+ test_files: []