dbf 2.0.1 → 2.0.2

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/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ # 2.0.2
2
+ - Allow overriding the character encoding specified in the file
3
+
1
4
  # 2.0.1
2
5
  - Add experimental support for character encodings under Ruby 1.8
3
6
 
data/lib/dbf/table.rb CHANGED
@@ -49,11 +49,17 @@ module DBF
49
49
  # # working with a dbf and memo in memory
50
50
  # table = DBF::Table.new StringIO.new(dbf_data), StringIO.new(memo_data)
51
51
  #
52
+ # # working with a dbf overriding specified in the dbf encoding
53
+ # table = DBF::Table.new 'data.dbf', nil, 'cp437'
54
+ # table = DBF::Table.new 'data.dbf', 'memo.dbt', Encoding::US_ASCII
55
+ #
52
56
  # @param [String, StringIO] data Path to the dbf file or a StringIO object
53
57
  # @param [optional String, StringIO] memo Path to the memo file or a StringIO object
54
- def initialize(data, memo = nil)
58
+ # @param [optional String, Encoding] encoding Name of the encoding or an Encoding object
59
+ def initialize(data, memo = nil, encoding = nil)
55
60
  @data = open_data(data)
56
61
  get_header_info
62
+ @encoding = encoding if encoding && @encoding
57
63
  @memo = open_memo(data, memo)
58
64
  end
59
65
 
data/lib/dbf/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module DBF
2
- VERSION = '2.0.1'
2
+ VERSION = '2.0.2'
3
3
  end
@@ -52,13 +52,27 @@ describe DBF::Record do
52
52
  end
53
53
 
54
54
  describe 'column data for table' do
55
- let(:table) { DBF::Table.new "#{DB_PATH}/cp1251.dbf"}
55
+ describe 'using specified in dbf encoding' do
56
+ let(:table) { DBF::Table.new "#{DB_PATH}/cp1251.dbf"}
56
57
 
57
- let(:record) { table.find(0) }
58
- it 'should automatically encodes to default system encoding' do
59
- if table.supports_encoding?
60
- record.name.encoding.should == Encoding.default_external
61
- record.name.encode("UTF-8").unpack("H4").should == ["d0b0"] # russian a
58
+ let(:record) { table.find(0) }
59
+ it 'should automatically encodes to default system encoding' do
60
+ if table.supports_encoding?
61
+ record.name.encoding.should == Encoding.default_external
62
+ record.name.encode("UTF-8").unpack("H4").should == ["d0b0"] # russian a
63
+ end
64
+ end
65
+ end
66
+
67
+ describe 'overriding specified in dbf encoding' do
68
+ let(:table) { DBF::Table.new "#{DB_PATH}/cp1251.dbf", nil, 'cp866'}
69
+
70
+ let(:record) { table.find(0) }
71
+ it 'should transcode from manually specified encoding to default system encoding' do
72
+ if table.supports_encoding?
73
+ record.name.encoding.should == Encoding.default_external
74
+ record.name.encode("UTF-8").unpack("H4").should == ["d180"] # russian а encoded in cp1251 and read as if it was encoded in cp866
75
+ end
62
76
  end
63
77
  end
64
78
  end
metadata CHANGED
@@ -1,75 +1,75 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dbf
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 2
7
- - 0
8
- - 1
9
- version: 2.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.2
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Keith Morrison
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2012-09-28 00:00:00 -07:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-11-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: fastercsv
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
25
19
  - - ~>
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 1
29
- - 5
30
- - 4
20
+ - !ruby/object:Gem::Version
31
21
  version: 1.5.4
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: rspec
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- requirements:
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
39
27
  - - ~>
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 2
43
- - 9
44
- - 0
28
+ - !ruby/object:Gem::Version
29
+ version: 1.5.4
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
45
37
  version: 2.9.0
46
38
  type: :development
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: rake
50
39
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
52
- requirements:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
53
43
  - - ~>
54
- - !ruby/object:Gem::Version
55
- segments:
56
- - 0
57
- - 9
58
- - 2
44
+ - !ruby/object:Gem::Version
45
+ version: 2.9.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
59
53
  version: 0.9.2
60
54
  type: :development
61
- version_requirements: *id003
62
- description: A small fast library for reading dBase, xBase, Clipper and FoxPro database files.
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.2
62
+ description: A small fast library for reading dBase, xBase, Clipper and FoxPro database
63
+ files.
63
64
  email: keithm@infused.org
64
- executables:
65
+ executables:
65
66
  - dbf
66
67
  extensions: []
67
-
68
- extra_rdoc_files:
68
+ extra_rdoc_files:
69
69
  - README.md
70
70
  - CHANGELOG.md
71
71
  - MIT-LICENSE
72
- files:
72
+ files:
73
73
  - CHANGELOG.md
74
74
  - Gemfile
75
75
  - Gemfile.lock
@@ -109,39 +109,32 @@ files:
109
109
  - spec/rvm_ruby_runner.rb
110
110
  - spec/spec_helper.rb
111
111
  - dbf.gemspec
112
- has_rdoc: true
113
112
  homepage: http://github.com/infused/dbf
114
113
  licenses: []
115
-
116
114
  post_install_message:
117
- rdoc_options:
115
+ rdoc_options:
118
116
  - --charset=UTF-8
119
- require_paths:
117
+ require_paths:
120
118
  - lib
121
- required_ruby_version: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- segments:
126
- - 0
127
- version: "0"
128
- required_rubygems_version: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- segments:
133
- - 1
134
- - 3
135
- - 0
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ! '>='
129
+ - !ruby/object:Gem::Version
136
130
  version: 1.3.0
137
131
  requirements: []
138
-
139
132
  rubyforge_project:
140
- rubygems_version: 1.3.6
133
+ rubygems_version: 1.8.24
141
134
  signing_key:
142
135
  specification_version: 3
143
136
  summary: Read xBase files
144
- test_files:
137
+ test_files:
145
138
  - spec/dbf/column_spec.rb
146
139
  - spec/dbf/file_formats_spec.rb
147
140
  - spec/dbf/record_spec.rb