ofx 0.1.0 → 0.2.0

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/lib/ofx.rb CHANGED
@@ -15,6 +15,6 @@ require "ofx/account"
15
15
  require "ofx/transaction"
16
16
  require "ofx/version"
17
17
 
18
- def OFX(path, &block)
19
- yield OFX::Parser::Base.new(path).parser
18
+ def OFX(resource, &block)
19
+ yield OFX::Parser::Base.new(resource).parser
20
20
  end
data/lib/ofx/parser.rb CHANGED
@@ -6,8 +6,8 @@ module OFX
6
6
  attr_reader :content
7
7
  attr_reader :parser
8
8
 
9
- def initialize(path)
10
- @content = open(path).read
9
+ def initialize(resource)
10
+ @content = open_resource(resource).read
11
11
  @headers, @body = prepare(content)
12
12
 
13
13
  @parser = case @headers["VERSION"]
@@ -17,10 +17,22 @@ module OFX
17
17
  end
18
18
  end
19
19
 
20
+ def open_resource(resource)
21
+ if resource.respond_to?(:read)
22
+ return resource
23
+ else
24
+ begin
25
+ return open(resource)
26
+ rescue
27
+ return StringIO.new(resource)
28
+ end
29
+ end
30
+ end
31
+
20
32
  private
21
33
  def prepare(content)
22
34
  # Split headers & body
23
- headers, body = content.dup.split(/\n{2,}|:?<OFX>/, 2)
35
+ headers, body = content.dup.split(/\n{2,}|:?<OFX>/, 2)
24
36
 
25
37
  # Parse headers. When value is NONE, convert it to nil.
26
38
  headers = headers.to_enum(:each_line).inject({}) do |memo, line|
data/ofx.gemspec ADDED
@@ -0,0 +1,66 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{ofx}
8
+ s.version = "0.2.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Nando Vieira"]
12
+ s.date = %q{2009-11-13}
13
+ s.description = %q{A simple OFX (Open Financial Exchange) parser built on top of Nokogiri. Currently supports OFX 1.0.2.
14
+ }
15
+ s.email = %q{fnando.vieira@gmail.com}
16
+ s.extra_rdoc_files = [
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ "README.markdown",
21
+ "Rakefile",
22
+ "VERSION",
23
+ "lib/ofx.rb",
24
+ "lib/ofx/account.rb",
25
+ "lib/ofx/balance.rb",
26
+ "lib/ofx/foundation.rb",
27
+ "lib/ofx/parser.rb",
28
+ "lib/ofx/parser/ofx102.rb",
29
+ "lib/ofx/transaction.rb",
30
+ "lib/ofx/version.rb",
31
+ "ofx.gemspec",
32
+ "spec/fixtures/sample.ofx",
33
+ "spec/ofx/account_spec.rb",
34
+ "spec/ofx/ofx102_spec.rb",
35
+ "spec/ofx/ofx_parser_spec.rb",
36
+ "spec/ofx/ofx_spec.rb",
37
+ "spec/ofx/transaction_spec.rb",
38
+ "spec/spec_helper.rb"
39
+ ]
40
+ s.homepage = %q{http://github.com/fnando/ofx}
41
+ s.rdoc_options = ["--charset=UTF-8"]
42
+ s.require_paths = ["lib"]
43
+ s.rubygems_version = %q{1.3.5}
44
+ s.summary = %q{A simple OFX (Open Financial Exchange) parser built on top of Nokogiri. Currently supports OFX 1.0.2.}
45
+ s.test_files = [
46
+ "spec/ofx/account_spec.rb",
47
+ "spec/ofx/ofx102_spec.rb",
48
+ "spec/ofx/ofx_parser_spec.rb",
49
+ "spec/ofx/ofx_spec.rb",
50
+ "spec/ofx/transaction_spec.rb",
51
+ "spec/spec_helper.rb"
52
+ ]
53
+
54
+ if s.respond_to? :specification_version then
55
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
56
+ s.specification_version = 3
57
+
58
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
59
+ s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
60
+ else
61
+ s.add_dependency(%q<nokogiri>, [">= 0"])
62
+ end
63
+ else
64
+ s.add_dependency(%q<nokogiri>, [">= 0"])
65
+ end
66
+ end
@@ -4,55 +4,68 @@ describe OFX::Parser do
4
4
  before do
5
5
  @ofx = OFX::Parser::Base.new("spec/fixtures/sample.ofx")
6
6
  end
7
-
8
- it "should read file" do
7
+
8
+ it "should accept file path" do
9
+ @ofx = OFX::Parser::Base.new("spec/fixtures/sample.ofx")
10
+ @ofx.content.should_not be_nil
11
+ end
12
+
13
+ it "should accept file handler" do
14
+ file = open("spec/fixtures/sample.ofx")
15
+ @ofx = OFX::Parser::Base.new(file)
9
16
  @ofx.content.should_not be_nil
10
17
  end
11
-
18
+
19
+ it "should accept file content" do
20
+ file = open("spec/fixtures/sample.ofx").read
21
+ @ofx = OFX::Parser::Base.new(file)
22
+ @ofx.content.should_not be_nil
23
+ end
24
+
12
25
  it "should set content" do
13
26
  @ofx.content.should == open("spec/fixtures/sample.ofx").read
14
27
  end
15
-
28
+
16
29
  it "should set body" do
17
30
  @ofx.body.should_not be_nil
18
31
  end
19
-
32
+
20
33
  describe "headers" do
21
34
  it "should have OFXHEADER" do
22
35
  @ofx.headers["OFXHEADER"].should == "100"
23
36
  end
24
-
37
+
25
38
  it "should have DATA" do
26
39
  @ofx.headers["DATA"].should == "OFXSGML"
27
40
  end
28
-
41
+
29
42
  it "should have VERSION" do
30
43
  @ofx.headers["VERSION"].should == "102"
31
44
  end
32
-
45
+
33
46
  it "should have SECURITY" do
34
47
  @ofx.headers.should have_key("SECURITY")
35
48
  @ofx.headers["SECURITY"].should be_nil
36
49
  end
37
-
50
+
38
51
  it "should have ENCODING" do
39
52
  @ofx.headers["ENCODING"].should == "USASCII"
40
53
  end
41
-
54
+
42
55
  it "should have CHARSET" do
43
56
  @ofx.headers["CHARSET"].should == "1252"
44
57
  end
45
-
58
+
46
59
  it "should have COMPRESSION" do
47
60
  @ofx.headers.should have_key("COMPRESSION")
48
61
  @ofx.headers["COMPRESSION"].should be_nil
49
62
  end
50
-
63
+
51
64
  it "should have OLDFILEUID" do
52
65
  @ofx.headers.should have_key("OLDFILEUID")
53
66
  @ofx.headers["OLDFILEUID"].should be_nil
54
67
  end
55
-
68
+
56
69
  it "should have NEWFILEUID" do
57
70
  @ofx.headers.should have_key("NEWFILEUID")
58
71
  @ofx.headers["NEWFILEUID"].should be_nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ofx
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
  - Nando Vieira
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-11 00:00:00 -02:00
12
+ date: 2009-11-13 00:00:00 -02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -22,7 +22,9 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: "0"
24
24
  version:
25
- description: A simple OFX (Open Financial Exchange) parser built on top of Nokogiri. Currently supports OFX 1.0.2.
25
+ description: |
26
+ A simple OFX (Open Financial Exchange) parser built on top of Nokogiri. Currently supports OFX 1.0.2.
27
+
26
28
  email: fnando.vieira@gmail.com
27
29
  executables: []
28
30
 
@@ -42,6 +44,7 @@ files:
42
44
  - lib/ofx/parser/ofx102.rb
43
45
  - lib/ofx/transaction.rb
44
46
  - lib/ofx/version.rb
47
+ - ofx.gemspec
45
48
  - spec/fixtures/sample.ofx
46
49
  - spec/ofx/account_spec.rb
47
50
  - spec/ofx/ofx102_spec.rb
@@ -49,8 +52,10 @@ files:
49
52
  - spec/ofx/ofx_spec.rb
50
53
  - spec/ofx/transaction_spec.rb
51
54
  - spec/spec_helper.rb
52
- has_rdoc: false
55
+ has_rdoc: true
53
56
  homepage: http://github.com/fnando/ofx
57
+ licenses: []
58
+
54
59
  post_install_message:
55
60
  rdoc_options:
56
61
  - --charset=UTF-8
@@ -71,9 +76,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
76
  requirements: []
72
77
 
73
78
  rubyforge_project:
74
- rubygems_version: 1.3.1
79
+ rubygems_version: 1.3.5
75
80
  signing_key:
76
- specification_version: 2
81
+ specification_version: 3
77
82
  summary: A simple OFX (Open Financial Exchange) parser built on top of Nokogiri. Currently supports OFX 1.0.2.
78
- test_files: []
79
-
83
+ test_files:
84
+ - spec/ofx/account_spec.rb
85
+ - spec/ofx/ofx102_spec.rb
86
+ - spec/ofx/ofx_parser_spec.rb
87
+ - spec/ofx/ofx_spec.rb
88
+ - spec/ofx/transaction_spec.rb
89
+ - spec/spec_helper.rb