beezwax 0.1.4 → 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.4
1
+ 0.2.0
@@ -31,14 +31,7 @@ module Btrieve
31
31
 
32
32
  def self.create_string_buffer(size)
33
33
  0.chr*(size)
34
- end
35
-
36
- #def dir_voodoo(session)
37
- # wd=Dir.pwd
38
- # Dir.chdir(session.pathname)
39
- # yield
40
- # Dir.chdir(wd)
41
- #end
34
+ end
42
35
 
43
36
  end
44
37
 
@@ -60,8 +53,6 @@ end
60
53
  require_relative 'btrieve_session'
61
54
  require_relative 'btrieve_table'
62
55
  require_relative 'btrieve_schema'
63
- require_relative 'btrieve_meta'
56
+ require_relative 'btrieve_map'
64
57
  require_relative 'btrieve_record'
65
58
  require_relative 'btrieve_model'
66
- require_relative 'fos_code'
67
-
@@ -0,0 +1,28 @@
1
+ class BtrieveMap
2
+ include Btrieve
3
+
4
+ attr_accessor :mapping
5
+
6
+ def initialize()
7
+ @mapping={}
8
+ end
9
+
10
+ def up(tablename, column_name, value)
11
+ db_cast(tablename, column_name, value, :up)
12
+ end
13
+
14
+ def down(tablename, column_name, value)
15
+ db_cast(tablename, column_name, value, :down)
16
+ end
17
+
18
+ private
19
+
20
+ def db_cast(tablename, column_name, value, mode)
21
+ table=mapping[tablename.to_s]
22
+ return value if(table.nil?)
23
+ column=table[column_name.to_s]
24
+ return value if(column.nil?)
25
+ column[mode].call(value)
26
+ end
27
+
28
+ end
@@ -61,18 +61,12 @@ class BtrieveRecord
61
61
  schema_key=get_schema_key(key_name)
62
62
  return nil if(schema_key.nil?)
63
63
  raw_data=@data_buffer.unpack(schema_key[:unpacker])[0]
64
- meta = @session.btrieve_meta
65
- return raw_data if meta.nil? # BS LOC - I'm ashamed
66
- meta.up(@btrieve_table.tablename, key_name, raw_data)
64
+ btrieve_map = @session.btrieve_map
65
+ btrieve_map.up(@btrieve_table.tablename, key_name, raw_data)
67
66
  end
68
-
69
- # def [](key_name)
70
- # schema_key = get_schema_key(key_name)
71
- # @data_buffer.unpack(schema_key[:unpacker])[0] if schema_key
72
- # end
73
67
 
74
68
  def []=(key_name, raw_data)
75
- value=@session.btrieve_meta.down(@btrieve_table.tablename, key_name, raw_data)
69
+ value=@session.btrieve_map.down(@btrieve_table.tablename, key_name, raw_data)
76
70
  schema_key = get_schema_key(key_name)
77
71
  packer_string = schema_key[:unpacker]
78
72
  match = packer_string.match(/@(\d+)([a-zA-Z]+)(\d*)/)
@@ -1,7 +1,8 @@
1
1
  class BtrieveSession
2
2
  SESSIONS = {}
3
3
  include Btrieve
4
- attr_reader :pathname, :client_id, :cache, :model_classes, :btrieve_schema, :btrieve_meta
4
+ attr_reader :pathname, :client_id, :cache, :model_classes, :btrieve_schema
5
+ attr_accessor :btrieve_map
5
6
 
6
7
  def self.set_context(pathname)
7
8
  session = get_session
@@ -43,7 +44,7 @@ class BtrieveSession
43
44
  @client_id = "#{0.chr*12}#{[0x5257].pack('S')}#{rand(65535)}"
44
45
  btr_op(self, SET_DIRECTORY, NULL_BUFFER, NULL_BUFFER, @pathname, NULL_KEY)
45
46
  @btrieve_schema = BtrieveSchema.new(self)
46
- @btrieve_meta = BtrieveMeta.new(self)
47
+ @btrieve_map = BtrieveMap.new()
47
48
  end
48
49
  end
49
50
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beezwax
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 4
10
- version: 0.1.4
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Patrick Lardin
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-24 00:00:00 -07:00
18
+ date: 2010-08-25 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -53,13 +53,12 @@ files:
53
53
  - lib/beezwax.rb
54
54
  - lib/btrieve/btrieve_const.rb
55
55
  - lib/btrieve/btrieve_core.rb
56
- - lib/btrieve/btrieve_meta.rb
56
+ - lib/btrieve/btrieve_map.rb
57
57
  - lib/btrieve/btrieve_model.rb
58
58
  - lib/btrieve/btrieve_record.rb
59
59
  - lib/btrieve/btrieve_schema.rb
60
60
  - lib/btrieve/btrieve_session.rb
61
61
  - lib/btrieve/btrieve_table.rb
62
- - lib/btrieve/fos_code.rb
63
62
  - test/helper.rb
64
63
  - test/test_beezwax.rb
65
64
  has_rdoc: true
@@ -1,63 +0,0 @@
1
- class BtrieveMeta
2
- include Btrieve
3
-
4
- TO_FOS_DATE=lambda{|date|Date.strptime(date,"%Y%m%d").jd-Date.parse("1900/01/01").jd+1}
5
- FROM_FOS_DATE=lambda{|day|Date.jd(day.to_i+Date.parse("1900/01/01").jd-1)}
6
- TO_FOS_TIME=lambda{|time|time[0,2].to_i*60+time[3,2].to_i}
7
- FROM_FOS_TIME=lambda{|time|"#{time.to_i/60}:#{(time.to_i%60).to_s.rjust(2,"0")}"}
8
-
9
- def initialize(session)
10
- @session=session
11
- @mapping={
12
- "passengers"=>{
13
- # "birthday"=>{:up=>FROM_FOS_DATE, :down=>TO_FOS_DATE},
14
- # "last flown"=>{:up=>FROM_FOS_DATE, :down=>TO_FOS_DATE}
15
- },
16
- "trip legs"=>{
17
- # "dept date act local"=>{:up=>FROM_FOS_DATE, :down=>TO_FOS_DATE},
18
- # "dept time act local"=>{:up=>FROM_FOS_TIME, :down=>TO_FOS_TIME},
19
- # "arr date act local"=>{:up=>FROM_FOS_DATE, :down=>TO_FOS_DATE},
20
- # "arriv time act local"=>{:up=>FROM_FOS_TIME, :down=>TO_FOS_TIME},
21
- # "flight time actual"=>{:up=>FROM_FOS_TIME, :down=>TO_FOS_TIME},
22
- # "leg type code"=>{:up=>FROM_FOS_CODE('trip_type___'), :down=>TO_FOS_CODE('trip_type___')},
23
- # "leg purpose code"=>{:up=>FROM_FOS_CODE('purpose_____'), :down=>TO_FOS_CODE('purpose_____')}
24
- }
25
- }
26
- @codes={}
27
- codes_table=@session.get_table("codes")[0]
28
- codes_table.each_record(BtrCodes::READ_ONLY_MODE) do |row|
29
- group=row[:name]
30
- code=row[:code]
31
- description=row[:description]
32
- value=row[:value]
33
- group_map=@codes[group]||={}
34
- group_map[value]=FosCode.new(group, value, code, description)
35
- end
36
- end
37
-
38
- def up(tablename, column_name, value)
39
- db_cast(tablename, column_name, value, :up)
40
- end
41
-
42
- def down(tablename, column_name, value)
43
- db_cast(tablename, column_name, value, :down)
44
- end
45
-
46
- private
47
-
48
- def db_cast(tablename, column_name, value, mode)
49
- table=@mapping[tablename.to_s]
50
- return value if(table.nil?)
51
- column=table[column_name.to_s]
52
- return value if(column.nil?)
53
- column[mode].call(value)
54
- end
55
-
56
- def FROM_FOS_CODE(groupname)
57
- lambda{|value|@codes[groupname][value]}
58
- end
59
-
60
- def TO_FOS_CODE(groupname)
61
- lambda{|value|@codes[groupname][value].value}
62
- end
63
- end
@@ -1,13 +0,0 @@
1
- class FosCode
2
- attr_reader :group, :value, :code, :description
3
- def initialize(group, value, code, description)
4
- @group=group
5
- @value=value
6
- @code=code
7
- @description=description
8
- end
9
-
10
- def to_s
11
- @description
12
- end
13
- end