rbase-ff 0.9 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 43fb9c0a12fadbc618c2447b8a3d9f67e30cc4b0
4
- data.tar.gz: 8b9e1657d06949598eb524d32d844c7bf1a0e773
3
+ metadata.gz: c9eb6abf1497f3b0c96a94d0193e0001d0a2613e
4
+ data.tar.gz: 14008e5e4c8db6fd58e34c8ab6a33ae4445d4e3f
5
5
  SHA512:
6
- metadata.gz: 0b6f2fc63244d75a344b963ce63a9b03b1b446db53fc5e72144770a8fd01f855e64c49f8817b62cfa3541b369fe13c3da31f5fd184b7129f4650652fba2c1b75
7
- data.tar.gz: 2d540336e920c3e05b286d452afcfbaf07989f66944edb5d3e023186f8396f4b82f0608e0cae12e22c5c2b3725b333d5f2d40d3879aac9c71d24f490fe6f71b6
6
+ metadata.gz: 56bee3cab28f813a227c009940a7d14cec5f48f67a9969d4a967d86d327bd0b422ff6e100a9b92d4af8a0058ebda490e779c01107bc416353c0e2c7a03026dfa
7
+ data.tar.gz: 2fff2c4048bb5e3d5cb3a3d432ef124796ef5bbcdbc7cd93a18384db393e77fbba73309ede0960aa941e6b1f69f51a7c1a9ff413631c9f6dde0e523faa7af6c4
data/README.md CHANGED
@@ -1,10 +1,20 @@
1
- rbase
2
- =====
1
+ rbase-ff
2
+ ========
3
3
 
4
- rbase gem (working with dbf files) for ruby 1.9.3 (iconv removed, some fixes)
4
+ ChangeLog
5
+ * 2018-04-14 Reading was broken due to relying on offset data in record data, which may be inaccurate.
6
+ * 2018-04-14 No longer necessary to require 'date' separately
7
+ * 2018-04-14 Added [] method to record; you can now do record[:field_name] instead of record.field_name
5
8
 
6
- How to use
7
- ==========
9
+
10
+ =======
11
+
12
+ rbase gem (working with dbf files) for ruby 1.9.3+ (iconv removed, some fixes)
13
+
14
+ I have copied this gem, made some minor changes, and pushed it to rubygems for public installation. There are many forks of this on github, but no one has bothered to push it to rubygems that I can find. This version is found on rubygems.org as rbase-ff. I will continue to maintain this version and keep the rubygems version updated from here. -- Tom L.
15
+
16
+ How to write a DBF
17
+ ==================
8
18
 
9
19
  ```ruby
10
20
  require 'rubygems'
@@ -25,3 +35,15 @@ RBase::Table.open 'people' do |t|
25
35
  t.create name: 'People-4', birthdate: Date.new(2020,1,2), active: true, tax: 8.2
26
36
  end
27
37
  ```
38
+
39
+ How to read a DBF
40
+ =================
41
+
42
+ ```ruby
43
+ RBase::Table.open 'people'.each do |record|
44
+ puts record.name
45
+ puts record.birthdate
46
+ puts record.active
47
+ puts record.tax
48
+ end
49
+ ```
data/README.md~ ADDED
@@ -0,0 +1,52 @@
1
+ rbase-ff
2
+ ========
3
+
4
+ ChangeLog
5
+ * 2018-04-14 Reading was broken due to relying on offset data in record data, which may be inaccurate.
6
+ <<<<<<< HEAD
7
+ * 2018-04-14 No longer necessary to require 'date' separately
8
+ * 2018-04-14 Added [] method to record; you can now do record[:field_name]
9
+ instead of record.field_name
10
+
11
+
12
+ =======
13
+
14
+ >>>>>>> 026944151965b8526adbfb15c064be25f13268fd
15
+ rbase gem (working with dbf files) for ruby 1.9.3+ (iconv removed, some fixes)
16
+
17
+ I have copied this gem, made some minor changes, and pushed it to rubygems for public installation. There are many forks of this on github, but no one has bothered to push it to rubygems that I can find. This version is found on rubygems.org as rbase-ff. I will continue to maintain this version and keep the rubygems version updated from here. -- Tom L.
18
+
19
+ How to write a DBF
20
+ ==================
21
+
22
+ ```ruby
23
+ require 'rubygems'
24
+ require "date"
25
+ require "rbase"
26
+
27
+ RBase.create_table 'people' do |t|
28
+ t.column :name, :string, :size => 30
29
+ t.column :birthdate, :date
30
+ t.column :active, :boolean
31
+ t.column :tax, :integer, :size => 10, :decimal => 2
32
+ end
33
+
34
+ RBase::Table.open 'people' do |t|
35
+ t.create name: 'People-1', birthdate: Date.new(2017,1,2), active: true, tax: 5.2
36
+ t.create name: 'People-2', birthdate: Date.new(2018,1,2), active: true, tax: 6.2
37
+ t.create name: 'People-3', birthdate: Date.new(2019,1,2), active: true, tax: 7.2
38
+ t.create name: 'People-4', birthdate: Date.new(2020,1,2), active: true, tax: 8.2
39
+ end
40
+ ```
41
+
42
+ How to read a DBF
43
+ =================
44
+
45
+ ```ruby
46
+ RBase::Table.open 'people'.each do |record|
47
+ puts record.name
48
+ puts record.birthdate
49
+ puts record.active
50
+ puts record.tax
51
+ end
52
+ ```
data/lib/rbase/builder.rb CHANGED
@@ -23,7 +23,7 @@ module RBase
23
23
  # For documentation on column parameters see RBase::Schema.column documentation.
24
24
  #
25
25
  def self.create_table(name, options = {})
26
- options[:language] ||= LANGUAGE_RUSSIAN_WINDOWS
26
+ options[:language] ||= LANGUAGE_US_DOS
27
27
 
28
28
  schema = Schema.new
29
29
  yield schema if block_given?
data/lib/rbase/columns.rb CHANGED
@@ -59,7 +59,7 @@ module RBase
59
59
  end
60
60
 
61
61
  def inspect
62
- "#{name}(type=#{type}, size=#{size})"
62
+ "#{name}(type=#{type}, size=#{size}, offset=#{offset})"
63
63
  end
64
64
 
65
65
  protected
data/lib/rbase/record.rb CHANGED
@@ -36,7 +36,7 @@ module RBase
36
36
  # puts user.birth_date
37
37
  #
38
38
  class Record
39
- attr_reader :table, :index
39
+ attr_reader :table, :index, :values_changed
40
40
 
41
41
  def initialize(table, attributes = {})
42
42
  @table = table
@@ -85,7 +85,11 @@ module RBase
85
85
  c.instance_variable_set("@data", @data)
86
86
  c
87
87
  end
88
-
88
+
89
+ def [](name)
90
+ get_value(name)
91
+ end
92
+
89
93
  def method_missing(sym, *args)
90
94
  name = sym.to_s
91
95
  if /=$/ =~ name && args.size == 1
data/lib/rbase/table.rb CHANGED
@@ -191,10 +191,15 @@ module RBase
191
191
  @name_to_columns = {}
192
192
  column_options = {}
193
193
  column_options[:encoding] = options[:encoding] if options[:encoding]
194
+ offset = 1
195
+ size = 0
194
196
  while true do
197
+ offset += size
195
198
  column_data = @file.read(32)
199
+ puts ">>#{column_data}<<"
196
200
  break if column_data[0, 1] == "\x0d"
197
- name, type, offset, size, decimal = *column_data.unpack('@0a11aLCC')
201
+ name, type, junk, size, decimal = *column_data.unpack('@0a11aLCC')
202
+ puts "name #{name}, offset #{offset}"
198
203
  name = name.strip
199
204
  @columns << Columns::Column.column_for(type).new(name, options.merge(:offset => offset, :size => size, :decimal => decimal))
200
205
  @name_to_columns[name.upcase.to_sym] = @columns.last
data/lib/rbase.rb CHANGED
@@ -1,8 +1,5 @@
1
- require 'rbase/encoder'
2
- require 'rbase/columns'
3
- require 'rbase/schema'
4
- require 'rbase/memo_file'
5
- require 'rbase/table'
6
- require 'rbase/record'
7
- require 'rbase/schema_dumper'
8
- require 'rbase/builder'
1
+ require 'date' unless defined? Date
2
+ files = Dir.glob('rbase/*.rb')
3
+ files.each do |file|
4
+ require_relative file
5
+ end
data/rbase.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'rbase-ff'
3
- s.version = '0.9'
3
+ s.version = '0.9.1'
4
4
  s.summary = 'Library to create/read/write to XBase databases (*.DBF files)'
5
5
  s.require_path = 'lib'
6
6
  s.files = Dir.glob('**/*').delete_if { |item| item =~ /^\./ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbase-ff
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.9'
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxim Kulkin, Leonardo Augusto Pires, Tom Lahti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-11 00:00:00.000000000 Z
11
+ date: 2018-04-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: maxim.kulkin@gmail.com, leonardo.pires@gmail.com, uidzip@gmail.com
@@ -17,6 +17,7 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - README.md
20
+ - README.md~
20
21
  - lib/rbase.rb
21
22
  - lib/rbase/builder.rb
22
23
  - lib/rbase/columns.rb