dbf 0.4.2 → 0.4.3

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 (4) hide show
  1. data/Rakefile +59 -0
  2. data/doc/README +37 -0
  3. data/lib/dbf/reader.rb +10 -1
  4. metadata +5 -3
@@ -0,0 +1,59 @@
1
+ require 'rubygems'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+ require 'rake/gempackagetask'
5
+ Gem::manage_gems
6
+
7
+ PKG_NAME = "dbf"
8
+ PKG_VERSION = "0.4.3"
9
+ PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
10
+
11
+ spec = Gem::Specification.new do |s|
12
+ s.name = PKG_NAME
13
+ s.version = PKG_VERSION
14
+ s.author = "Keith Morrison"
15
+ s.email = "keithm@infused.org"
16
+ s.homepage = "http://www.infused.org"
17
+ s.platform = Gem::Platform::RUBY
18
+ s.summary = "A library for reading dBase (or xBase, Clipper, Foxpro, etc) database files"
19
+ s.files = FileList["{lib,test}/**/*", "doc/README", "Rakefile"].to_a
20
+ s.require_path = "lib"
21
+ s.has_rdoc = true
22
+ end
23
+
24
+ desc 'Build Gem'
25
+ Rake::GemPackageTask.new(spec) do |pkg|
26
+ pkg.need_zip = true
27
+ pkg.need_tar = true
28
+ end
29
+
30
+ desc 'Run tests'
31
+ task :default => :test
32
+
33
+ desc 'Run tests'
34
+ Rake::TestTask.new :test do |t|
35
+ t.libs << "test"
36
+ t.pattern = 'test/*_test.rb'
37
+ t.verbose = true
38
+ end
39
+
40
+ desc "Generate documentation for the application"
41
+ Rake::RDocTask.new("rdoc") do |t|
42
+ t.rdoc_dir = 'doc/app'
43
+ t.title = "Ruby DBF Library"
44
+ t.options << '--line-numbers' << '--inline-source'
45
+ t.rdoc_files.include('doc/README')
46
+ t.rdoc_files.include('lib/**/*.rb')
47
+ end
48
+
49
+ desc "Creates a release tag"
50
+ task :create_release_tag do |t|
51
+ puts "Creating svn+ssh://infused@rubyforge.org/var/svn/dbf/tags/RELEASE_#{PKG_VERSION.gsub('.', '_')}"
52
+ `svn copy . svn+ssh://infused@rubyforge.org/var/svn/dbf/tags/RELEASE_#{PKG_VERSION.gsub('.', '_')} -m "Creating RELEASE_#{PKG_VERSION.gsub('.', '_')} tag"`
53
+ end
54
+
55
+ desc "Removes the current release tag"
56
+ task :remove_release_tag do |t|
57
+ puts "Removing svn+ssh://infused@rubyforge.org/var/svn/dbf/tags/RELEASE_#{PKG_VERSION.gsub('.', '_')}"
58
+ `svn remove svn+ssh://infused@rubyforge.org/var/svn/dbf/tags/RELEASE_#{PKG_VERSION.gsub('.', '_')} -m "Removing RELEASE_#{PKG_VERSION.gsub('.', '_')} tag"`
59
+ end
@@ -0,0 +1,37 @@
1
+ = DBF
2
+ A dBase I/O library.
3
+
4
+ == Features
5
+
6
+ * No external dependencies
7
+ * DB fields are type cast
8
+ * Date/Time fields are returned as either a Time or Date object. Date
9
+ will only be used if the date is outside the range for Time.
10
+
11
+ == Limitations
12
+
13
+ * Writing to the db has not been implemented yet
14
+
15
+ == Usage
16
+
17
+ reader = DBF::Reader.new("old_data.dbf")
18
+
19
+ reader.records.each do |record|
20
+ puts record['name']
21
+ puts record['email']
22
+ end
23
+
24
+ puts reader.records[4]['name']
25
+ puts reader.record(4)['name']
26
+
27
+ === A note on record vs. records
28
+
29
+ DBF::Reader#records is an in-memory array of all rows in the database. All
30
+ rows are loaded the first time that the method is called. Subsequent calls
31
+ retrieve the row from memory.
32
+
33
+ DBF::Reader#record retrieves the requested row from the database each time
34
+ it is called.
35
+
36
+ Using records is probably faster most of the time. Record is more appropriate
37
+ for very large databases where you don't want the whole db loaded into memory.
@@ -150,7 +150,16 @@ module DBF
150
150
  end
151
151
 
152
152
  def get_field_descriptors
153
- @fields = Array.new(@field_count) {|i| Field.new(*@data_file.read(32).unpack('a10xax4CC'))}
153
+ @fields = []
154
+ @field_count.times do
155
+ name, type, length, decimal = @data_file.read(32).unpack('a10xax4CC')
156
+ if length > 0 && !name.strip.empty?
157
+ @fields << Field.new(name.strip, type, length, decimal)
158
+ end
159
+ end
160
+ # adjust field count
161
+ @field_count = @fields.size
162
+ @fields
154
163
  end
155
164
 
156
165
  def get_memo_header_info
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
2
+ rubygems_version: 0.9.1
3
3
  specification_version: 1
4
4
  name: dbf
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.2
7
- date: 2006-12-22 00:00:00 -08:00
6
+ version: 0.4.3
7
+ date: 2007-01-31 00:00:00 -08:00
8
8
  summary: A library for reading dBase (or xBase, Clipper, Foxpro, etc) database files
9
9
  require_paths:
10
10
  - lib
@@ -40,6 +40,8 @@ files:
40
40
  - test/databases/dbase_iii.dbf
41
41
  - test/databases/foxpro.dbf
42
42
  - test/databases/foxpro.fpt
43
+ - doc/README
44
+ - Rakefile
43
45
  test_files: []
44
46
 
45
47
  rdoc_options: []