ofx 0.3.2 → 0.3.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.
- checksums.yaml +5 -5
- data/README.rdoc +5 -0
- data/lib/ofx/parser/ofx102.rb +133 -66
- data/lib/ofx/parser/ofx103.rb +7 -0
- data/lib/ofx/parser.rb +5 -3
- data/lib/ofx/sign_on.rb +1 -0
- data/lib/ofx/statement.rb +11 -0
- data/lib/ofx/status.rb +12 -0
- data/lib/ofx/transaction.rb +1 -0
- data/lib/ofx/version.rb +1 -1
- data/lib/ofx.rb +19 -14
- data/spec/ofx/account_spec.rb +67 -17
- data/spec/ofx/ofx102_spec.rb +27 -6
- data/spec/ofx/ofx103_spec.rb +50 -0
- data/spec/ofx/ofx211_spec.rb +25 -20
- data/spec/ofx/ofx_parser_spec.rb +24 -3
- data/spec/ofx/sign_on_spec.rb +4 -0
- data/spec/ofx/statement_spec.rb +131 -0
- data/spec/ofx/status_spec.rb +47 -0
- data/spec/ofx/transaction_spec.rb +54 -7
- metadata +36 -71
- data/.gitignore +0 -4
- data/.rspec +0 -1
- data/Gemfile +0 -2
- data/Gemfile.lock +0 -49
- data/ofx.gemspec +0 -34
- data/spec/fixtures/avatar.gif +0 -0
- data/spec/fixtures/bb.ofx +0 -700
- data/spec/fixtures/creditcard.ofx +0 -79
- data/spec/fixtures/invalid_version.ofx +0 -308
- data/spec/fixtures/sample.ofx +0 -314
- data/spec/fixtures/utf8.ofx +0 -308
- data/spec/fixtures/v211.ofx +0 -85
@@ -0,0 +1,50 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe OFX::Parser::OFX103 do
|
4
|
+
before do
|
5
|
+
@ofx = OFX::Parser::Base.new("spec/fixtures/v103.ofx")
|
6
|
+
@parser = @ofx.parser
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should have a version" do
|
10
|
+
OFX::Parser::OFX103::VERSION.should == "1.0.3"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should set headers" do
|
14
|
+
@parser.headers.should == @ofx.headers
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should trim trailing whitespace from headers" do
|
18
|
+
headers = OFX::Parser::OFX103.parse_headers("VERSION:103 ")
|
19
|
+
headers["VERSION"].should == "103"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should set body" do
|
23
|
+
@parser.body.should == @ofx.body
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should set account" do
|
27
|
+
@parser.account.should be_a_kind_of(OFX::Account)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should set account" do
|
31
|
+
@parser.sign_on.should be_a_kind_of(OFX::SignOn)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should set statements" do
|
35
|
+
@parser.statements.size.should == 1
|
36
|
+
@parser.statements.first.should be_a_kind_of(OFX::Statement)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should know about all transaction types" do
|
40
|
+
valid_types = [
|
41
|
+
'CREDIT', 'DEBIT', 'INT', 'DIV', 'FEE', 'SRVCHG', 'DEP', 'ATM', 'POS', 'XFER',
|
42
|
+
'CHECK', 'PAYMENT', 'CASH', 'DIRECTDEP', 'DIRECTDEBIT', 'REPEATPMT', 'OTHER'
|
43
|
+
]
|
44
|
+
valid_types.sort.should == OFX::Parser::OFX103::TRANSACTION_TYPES.keys.sort
|
45
|
+
|
46
|
+
valid_types.each do |transaction_type|
|
47
|
+
transaction_type.downcase.to_sym.should equal OFX::Parser::OFX103::TRANSACTION_TYPES[transaction_type]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/spec/ofx/ofx211_spec.rb
CHANGED
@@ -5,19 +5,19 @@ describe OFX::Parser::OFX211 do
|
|
5
5
|
@ofx = OFX::Parser::Base.new("spec/fixtures/v211.ofx")
|
6
6
|
@parser = @ofx.parser
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it "should have a version" do
|
10
10
|
OFX::Parser::OFX211::VERSION.should == "2.1.1"
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it "should set headers" do
|
14
14
|
@parser.headers.should == @ofx.headers
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it "should set body" do
|
18
18
|
@parser.body.should == @ofx.body
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
it "should set account" do
|
22
22
|
@parser.account.should be_a_kind_of(OFX::Account)
|
23
23
|
end
|
@@ -26,51 +26,56 @@ describe OFX::Parser::OFX211 do
|
|
26
26
|
@parser.sign_on.should be_a_kind_of(OFX::SignOn)
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
end
|
29
|
+
it "should set accounts" do
|
30
|
+
@parser.accounts.size.should == 2
|
31
|
+
end
|
33
32
|
|
33
|
+
it "should set statements" do
|
34
|
+
@parser.statements.size.should == 2
|
35
|
+
@parser.statements.first.should be_a_kind_of(OFX::Statement)
|
36
|
+
end
|
37
|
+
|
38
|
+
context "transactions" do
|
34
39
|
# Test file contains only three transactions. Let's just check
|
35
40
|
# them all.
|
36
41
|
context "first" do
|
37
42
|
before do
|
38
|
-
@t = @transactions[0]
|
43
|
+
@t = @parser.accounts[0].transactions[0]
|
39
44
|
end
|
40
45
|
|
41
46
|
it "should contain the correct values" do
|
42
|
-
@t.amount.should == -80
|
47
|
+
@t.amount.should == BigDecimal('-80')
|
43
48
|
@t.fit_id.should == "219378"
|
44
49
|
@t.memo.should be_empty
|
45
|
-
@t.posted_at.should == Time.parse("2005-08-24 08:00:00")
|
50
|
+
@t.posted_at.should == Time.parse("2005-08-24 08:00:00 +0000")
|
46
51
|
@t.name.should == "FrogKick Scuba Gear"
|
47
52
|
end
|
48
53
|
end
|
49
54
|
|
50
55
|
context "second" do
|
51
56
|
before do
|
52
|
-
@t = @
|
57
|
+
@t = @parser.accounts[1].transactions[0]
|
53
58
|
end
|
54
|
-
|
59
|
+
|
55
60
|
it "should contain the correct values" do
|
56
|
-
@t.amount.should == -23
|
61
|
+
@t.amount.should == BigDecimal('-23')
|
57
62
|
@t.fit_id.should == "219867"
|
58
63
|
@t.memo.should be_empty
|
59
|
-
@t.posted_at.should == Time.parse("2005-08-11 08:00:00")
|
64
|
+
@t.posted_at.should == Time.parse("2005-08-11 08:00:00 +0000")
|
60
65
|
@t.name.should == "Interest Charge"
|
61
66
|
end
|
62
67
|
end
|
63
|
-
|
68
|
+
|
64
69
|
context "third" do
|
65
70
|
before do
|
66
|
-
@t = @transactions[
|
71
|
+
@t = @parser.accounts[1].transactions[1]
|
67
72
|
end
|
68
|
-
|
73
|
+
|
69
74
|
it "should contain the correct values" do
|
70
|
-
@t.amount.should == 350
|
75
|
+
@t.amount.should == BigDecimal('350')
|
71
76
|
@t.fit_id.should == "219868"
|
72
77
|
@t.memo.should be_empty
|
73
|
-
@t.posted_at.should == Time.parse("2005-08-11 08:00:00")
|
78
|
+
@t.posted_at.should == Time.parse("2005-08-11 08:00:00 +0000")
|
74
79
|
@t.name.should == "Payment - Thank You"
|
75
80
|
end
|
76
81
|
end
|
data/spec/ofx/ofx_parser_spec.rb
CHANGED
@@ -47,6 +47,18 @@ describe OFX::Parser do
|
|
47
47
|
}.should raise_error(OFX::UnsupportedFileError)
|
48
48
|
end
|
49
49
|
|
50
|
+
it "should use 211 parser to parse version 200 ofx files" do
|
51
|
+
OFX::Parser::OFX211.stub(:new).and_return('ofx-211-parser')
|
52
|
+
ofx = OFX::Parser::Base.new(ofx_2_example('200'))
|
53
|
+
ofx.parser.should == 'ofx-211-parser'
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should use 211 parser to parse version 202 ofx files" do
|
57
|
+
OFX::Parser::OFX211.stub(:new).and_return('ofx-211-parser')
|
58
|
+
ofx = OFX::Parser::Base.new(ofx_2_example('202'))
|
59
|
+
ofx.parser.should == 'ofx-211-parser'
|
60
|
+
end
|
61
|
+
|
50
62
|
describe "headers" do
|
51
63
|
it "should have OFXHEADER" do
|
52
64
|
@ofx.headers["OFXHEADER"].should == "100"
|
@@ -87,16 +99,25 @@ describe OFX::Parser do
|
|
87
99
|
@ofx.headers.should have_key("NEWFILEUID")
|
88
100
|
@ofx.headers["NEWFILEUID"].should be_nil
|
89
101
|
end
|
90
|
-
|
102
|
+
|
91
103
|
it "should parse headers with CR and without LF" do
|
92
104
|
@ofx = OFX::Parser::Base.new(ofx_with_carriage_return)
|
93
105
|
@ofx.headers.size.should be(9)
|
94
106
|
end
|
95
107
|
end
|
96
|
-
|
108
|
+
|
97
109
|
def ofx_with_carriage_return
|
98
110
|
header = %{OFXHEADER:100\rDATA:OFXSGML\rVERSION:102\rSECURITY:NONE\rENCODING:USASCII\rCHARSET:1252\rCOMPRESSION:NONE\rOLDFILEUID:NONE\rNEWFILEUID:NONE\r}
|
99
111
|
body = open("spec/fixtures/sample.ofx").read.split(/<OFX>/, 2)[1]
|
100
112
|
header + "<OFX>" + body
|
101
113
|
end
|
102
|
-
|
114
|
+
|
115
|
+
def ofx_2_example(version)
|
116
|
+
<<-EndOfx
|
117
|
+
<?xml version="1.0" encoding="US-ASCII"?>
|
118
|
+
<?OFX OFXHEADER="200" VERSION="#{version}" SECURITY="NONE" OLDFILEUID="NONE" NEWFILEUID="NONE"?>"
|
119
|
+
<OFX>
|
120
|
+
</OFX>
|
121
|
+
EndOfx
|
122
|
+
end
|
123
|
+
end
|
data/spec/ofx/sign_on_spec.rb
CHANGED
@@ -0,0 +1,131 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe OFX::Statement do
|
4
|
+
let(:parser) { ofx.parser }
|
5
|
+
let(:statement) { parser.statements.first }
|
6
|
+
|
7
|
+
context "Bank Account" do
|
8
|
+
let(:ofx) { OFX::Parser::Base.new("spec/fixtures/sample.ofx") }
|
9
|
+
|
10
|
+
it "returns currency" do
|
11
|
+
statement.currency.should == "BRL"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns start date" do
|
15
|
+
statement.start_date.should == Time.parse("2009-10-09 08:00:00 +0000")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns end date" do
|
19
|
+
statement.end_date.should == Time.parse("2009-11-03 08:00:00 +0000")
|
20
|
+
end
|
21
|
+
|
22
|
+
it "returns account" do
|
23
|
+
statement.account.should be_a(OFX::Account)
|
24
|
+
statement.account.id.should == '03227113109'
|
25
|
+
statement.account.type.should == :checking
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns transactions" do
|
29
|
+
statement.transactions.should be_a(Array)
|
30
|
+
statement.transactions.size.should == 36
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "balance" do
|
34
|
+
let(:balance) { statement.balance }
|
35
|
+
|
36
|
+
it "returns balance" do
|
37
|
+
balance.amount.should == BigDecimal('598.44')
|
38
|
+
end
|
39
|
+
|
40
|
+
it "returns balance in pennies" do
|
41
|
+
balance.amount_in_pennies.should == 59844
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns balance date" do
|
45
|
+
balance.posted_at.should == Time.parse("2009-11-01 00:00:00 +0000")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "available_balance" do
|
50
|
+
let(:available_balance) { statement.available_balance }
|
51
|
+
|
52
|
+
it "returns available balance" do
|
53
|
+
available_balance.amount.should == BigDecimal('1555.99')
|
54
|
+
end
|
55
|
+
|
56
|
+
it "returns available balance in pennies" do
|
57
|
+
available_balance.amount_in_pennies.should == 155599
|
58
|
+
end
|
59
|
+
|
60
|
+
it "returns available balance date" do
|
61
|
+
available_balance.posted_at.should == Time.parse("2009-11-01 00:00:00 +0000")
|
62
|
+
end
|
63
|
+
|
64
|
+
context "when AVAILBAL not found" do
|
65
|
+
let(:ofx) { OFX::Parser::Base.new("spec/fixtures/utf8.ofx") }
|
66
|
+
|
67
|
+
it "returns nil " do
|
68
|
+
available_balance.should be_nil
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context "Credit Card" do
|
75
|
+
let(:ofx) { OFX::Parser::Base.new("spec/fixtures/creditcard.ofx") }
|
76
|
+
|
77
|
+
it "returns currency" do
|
78
|
+
statement.currency.should == "USD"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "returns start date" do
|
82
|
+
statement.start_date.should == Time.parse("2007-05-09 12:00:00 +0000")
|
83
|
+
end
|
84
|
+
|
85
|
+
it "returns end date" do
|
86
|
+
statement.end_date.should == Time.parse("2007-06-08 12:00:00 +0000")
|
87
|
+
end
|
88
|
+
|
89
|
+
it "returns account" do
|
90
|
+
statement.account.should be_a(OFX::Account)
|
91
|
+
statement.account.id.should == 'XXXXXXXXXXXX1111'
|
92
|
+
end
|
93
|
+
|
94
|
+
it "returns transactions" do
|
95
|
+
statement.transactions.should be_a(Array)
|
96
|
+
statement.transactions.size.should == 3
|
97
|
+
end
|
98
|
+
|
99
|
+
describe "balance" do
|
100
|
+
let(:balance) { statement.balance }
|
101
|
+
|
102
|
+
it "returns balance" do
|
103
|
+
balance.amount.should == BigDecimal('-1111.01')
|
104
|
+
end
|
105
|
+
|
106
|
+
it "returns balance in pennies" do
|
107
|
+
balance.amount_in_pennies.should == -111101
|
108
|
+
end
|
109
|
+
|
110
|
+
it "returns balance date" do
|
111
|
+
balance.posted_at.should == Time.parse("2007-06-23 19:20:13 +0000")
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe "available_balance" do
|
116
|
+
let(:available_balance) { statement.available_balance }
|
117
|
+
|
118
|
+
it "returns available balance" do
|
119
|
+
available_balance.amount.should == BigDecimal('19000.99')
|
120
|
+
end
|
121
|
+
|
122
|
+
it "returns available balance in pennies" do
|
123
|
+
available_balance.amount_in_pennies.should == 1900099
|
124
|
+
end
|
125
|
+
|
126
|
+
it "returns available balance date" do
|
127
|
+
available_balance.posted_at.should == Time.parse("2007-06-23 19:20:13 +0000")
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe OFX::Status do
|
4
|
+
let(:ofx) { OFX::Parser::Base.new(ofx_file) }
|
5
|
+
let(:parser) { ofx.parser }
|
6
|
+
let(:status) { parser.sign_on.status }
|
7
|
+
|
8
|
+
context "success" do
|
9
|
+
let(:ofx_file) { "spec/fixtures/creditcard.ofx" }
|
10
|
+
|
11
|
+
it "should return code" do
|
12
|
+
status.code.should == 0
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return severity" do
|
16
|
+
status.severity.should == :info
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should return message" do
|
20
|
+
status.message.should == ""
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should be successful" do
|
24
|
+
status.success?.should == true
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "error" do
|
29
|
+
let(:ofx_file) { "spec/fixtures/error.ofx" }
|
30
|
+
|
31
|
+
it "should return code" do
|
32
|
+
status.code.should == 2000
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should return severity" do
|
36
|
+
status.severity.should == :error
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return message" do
|
40
|
+
status.message.should == "We were unable to process your request. Please try again later."
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should not be successful" do
|
44
|
+
status.success?.should == false
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -13,7 +13,7 @@ describe OFX::Transaction do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should set amount" do
|
16
|
-
@transaction.amount.should == -35.34
|
16
|
+
@transaction.amount.should == BigDecimal('-35.34')
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should cast amount to BigDecimal" do
|
@@ -37,7 +37,11 @@ describe OFX::Transaction do
|
|
37
37
|
end
|
38
38
|
|
39
39
|
it "should have date" do
|
40
|
-
@transaction.posted_at.should == Time.parse("2009-10-09 08:00:00")
|
40
|
+
@transaction.posted_at.should == Time.parse("2009-10-09 08:00:00 +0000")
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should have user date' do
|
44
|
+
@transaction.occurred_at.should == Time.parse("2009-09-09 08:00:00 +0000")
|
41
45
|
end
|
42
46
|
|
43
47
|
it "should have type" do
|
@@ -55,7 +59,7 @@ describe OFX::Transaction do
|
|
55
59
|
end
|
56
60
|
|
57
61
|
it "should set amount" do
|
58
|
-
@transaction.amount.should == 60.39
|
62
|
+
@transaction.amount.should == BigDecimal('60.39')
|
59
63
|
end
|
60
64
|
|
61
65
|
it "should set amount in pennies" do
|
@@ -75,13 +79,17 @@ describe OFX::Transaction do
|
|
75
79
|
end
|
76
80
|
|
77
81
|
it "should have date" do
|
78
|
-
@transaction.posted_at.should == Time.parse("2009-10-16 08:00:00")
|
82
|
+
@transaction.posted_at.should == Time.parse("2009-10-16 08:00:00 +0000")
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should have user date" do
|
86
|
+
@transaction.occurred_at.should == Time.parse("2009-09-16 08:00:00 +0000")
|
79
87
|
end
|
80
88
|
|
81
89
|
it "should have type" do
|
82
90
|
@transaction.type.should == :credit
|
83
91
|
end
|
84
|
-
|
92
|
+
|
85
93
|
it "should have empty sic" do
|
86
94
|
@transaction.sic.should == ''
|
87
95
|
end
|
@@ -101,7 +109,11 @@ describe OFX::Transaction do
|
|
101
109
|
end
|
102
110
|
|
103
111
|
it "should have date" do
|
104
|
-
@transaction.posted_at.should == Time.parse("2009-10-19 12:00:00")
|
112
|
+
@transaction.posted_at.should == Time.parse("2009-10-19 12:00:00 -0300")
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should have user date" do
|
116
|
+
@transaction.occurred_at.should == Time.parse("2009-10-17 12:00:00 -0300")
|
105
117
|
end
|
106
118
|
|
107
119
|
it "should have type" do
|
@@ -124,7 +136,6 @@ describe OFX::Transaction do
|
|
124
136
|
end
|
125
137
|
|
126
138
|
context "with other types" do
|
127
|
-
|
128
139
|
before do
|
129
140
|
@ofx = OFX::Parser::Base.new("spec/fixtures/bb.ofx")
|
130
141
|
@parser = @ofx.parser
|
@@ -151,4 +162,40 @@ describe OFX::Transaction do
|
|
151
162
|
@transaction.type.should == :check
|
152
163
|
end
|
153
164
|
end
|
165
|
+
|
166
|
+
context "decimal values using a comma" do
|
167
|
+
before do
|
168
|
+
@ofx = OFX::Parser::Base.new("spec/fixtures/santander.ofx")
|
169
|
+
@parser = @ofx.parser
|
170
|
+
@account = @parser.account
|
171
|
+
end
|
172
|
+
|
173
|
+
context "debit" do
|
174
|
+
before do
|
175
|
+
@transaction = @account.transactions[0]
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should set amount" do
|
179
|
+
@transaction.amount.should == BigDecimal('-11.76')
|
180
|
+
end
|
181
|
+
|
182
|
+
it "should set amount in pennies" do
|
183
|
+
@transaction.amount_in_pennies.should == -1176
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
context "credit" do
|
188
|
+
before do
|
189
|
+
@transaction = @account.transactions[3]
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should set amount" do
|
193
|
+
@transaction.amount.should == BigDecimal('47.01')
|
194
|
+
end
|
195
|
+
|
196
|
+
it "should set amount in pennies" do
|
197
|
+
@transaction.amount_in_pennies.should == 4701
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
154
201
|
end
|
metadata
CHANGED
@@ -1,93 +1,79 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ofx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nando Vieira
|
8
8
|
- Anna Cruz
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-02-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 1.13.1
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: 1.13.1
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: byebug
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - ~>
|
32
|
+
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 11.1.3
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - ~>
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: 11.1.3
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rake
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
49
|
-
type: :development
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - '>='
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: pry
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - '>='
|
46
|
+
- - "~>"
|
61
47
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
48
|
+
version: 13.0.6
|
63
49
|
type: :development
|
64
50
|
prerelease: false
|
65
51
|
version_requirements: !ruby/object:Gem::Requirement
|
66
52
|
requirements:
|
67
|
-
- -
|
53
|
+
- - "~>"
|
68
54
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
55
|
+
version: 13.0.6
|
70
56
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
57
|
+
name: rspec
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
73
59
|
requirements:
|
74
|
-
- -
|
60
|
+
- - "~>"
|
75
61
|
- !ruby/object:Gem::Version
|
76
|
-
version: '
|
62
|
+
version: '3.10'
|
77
63
|
type: :development
|
78
64
|
prerelease: false
|
79
65
|
version_requirements: !ruby/object:Gem::Requirement
|
80
66
|
requirements:
|
81
|
-
- -
|
67
|
+
- - "~>"
|
82
68
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
69
|
+
version: '3.10'
|
84
70
|
description: |
|
85
71
|
A simple OFX (Open Financial Exchange) parser built on top of Nokogiri.
|
86
72
|
Currently supports OFX 102, 200 and 211.
|
87
73
|
|
88
74
|
Usage:
|
89
75
|
|
90
|
-
OFX(
|
76
|
+
OFX('sample.ofx') do |ofx|
|
91
77
|
p ofx
|
92
78
|
end
|
93
79
|
email:
|
@@ -97,10 +83,6 @@ executables: []
|
|
97
83
|
extensions: []
|
98
84
|
extra_rdoc_files: []
|
99
85
|
files:
|
100
|
-
- .gitignore
|
101
|
-
- .rspec
|
102
|
-
- Gemfile
|
103
|
-
- Gemfile.lock
|
104
86
|
- README.rdoc
|
105
87
|
- Rakefile
|
106
88
|
- lib/ofx.rb
|
@@ -110,63 +92,46 @@ files:
|
|
110
92
|
- lib/ofx/foundation.rb
|
111
93
|
- lib/ofx/parser.rb
|
112
94
|
- lib/ofx/parser/ofx102.rb
|
95
|
+
- lib/ofx/parser/ofx103.rb
|
113
96
|
- lib/ofx/parser/ofx211.rb
|
114
97
|
- lib/ofx/sign_on.rb
|
98
|
+
- lib/ofx/statement.rb
|
99
|
+
- lib/ofx/status.rb
|
115
100
|
- lib/ofx/transaction.rb
|
116
101
|
- lib/ofx/version.rb
|
117
|
-
- ofx.gemspec
|
118
|
-
- spec/fixtures/avatar.gif
|
119
|
-
- spec/fixtures/bb.ofx
|
120
|
-
- spec/fixtures/creditcard.ofx
|
121
|
-
- spec/fixtures/invalid_version.ofx
|
122
|
-
- spec/fixtures/sample.ofx
|
123
|
-
- spec/fixtures/utf8.ofx
|
124
|
-
- spec/fixtures/v211.ofx
|
125
102
|
- spec/ofx/account_spec.rb
|
126
103
|
- spec/ofx/ofx102_spec.rb
|
104
|
+
- spec/ofx/ofx103_spec.rb
|
127
105
|
- spec/ofx/ofx211_spec.rb
|
128
106
|
- spec/ofx/ofx_parser_spec.rb
|
129
107
|
- spec/ofx/ofx_spec.rb
|
130
108
|
- spec/ofx/sign_on_spec.rb
|
109
|
+
- spec/ofx/statement_spec.rb
|
110
|
+
- spec/ofx/status_spec.rb
|
131
111
|
- spec/ofx/transaction_spec.rb
|
132
112
|
- spec/spec_helper.rb
|
133
113
|
homepage: http://rubygems.org/gems/ofx
|
134
|
-
licenses:
|
114
|
+
licenses:
|
115
|
+
- MIT
|
135
116
|
metadata: {}
|
136
|
-
post_install_message:
|
117
|
+
post_install_message:
|
137
118
|
rdoc_options: []
|
138
119
|
require_paths:
|
139
120
|
- lib
|
140
121
|
required_ruby_version: !ruby/object:Gem::Requirement
|
141
122
|
requirements:
|
142
|
-
- -
|
123
|
+
- - ">="
|
143
124
|
- !ruby/object:Gem::Version
|
144
125
|
version: '0'
|
145
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
127
|
requirements:
|
147
|
-
- -
|
128
|
+
- - ">="
|
148
129
|
- !ruby/object:Gem::Version
|
149
130
|
version: '0'
|
150
131
|
requirements: []
|
151
|
-
|
152
|
-
|
153
|
-
signing_key:
|
132
|
+
rubygems_version: 3.3.3
|
133
|
+
signing_key:
|
154
134
|
specification_version: 4
|
155
135
|
summary: A simple OFX (Open Financial Exchange) parser built on top of Nokogiri. Currently
|
156
136
|
supports OFX 102, 200 and 211.
|
157
|
-
test_files:
|
158
|
-
- spec/fixtures/avatar.gif
|
159
|
-
- spec/fixtures/bb.ofx
|
160
|
-
- spec/fixtures/creditcard.ofx
|
161
|
-
- spec/fixtures/invalid_version.ofx
|
162
|
-
- spec/fixtures/sample.ofx
|
163
|
-
- spec/fixtures/utf8.ofx
|
164
|
-
- spec/fixtures/v211.ofx
|
165
|
-
- spec/ofx/account_spec.rb
|
166
|
-
- spec/ofx/ofx102_spec.rb
|
167
|
-
- spec/ofx/ofx211_spec.rb
|
168
|
-
- spec/ofx/ofx_parser_spec.rb
|
169
|
-
- spec/ofx/ofx_spec.rb
|
170
|
-
- spec/ofx/sign_on_spec.rb
|
171
|
-
- spec/ofx/transaction_spec.rb
|
172
|
-
- spec/spec_helper.rb
|
137
|
+
test_files: []
|