makumba_import 0.0.4 → 0.1.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/README.md CHANGED
@@ -37,3 +37,13 @@ MakumbaImport::Importer.setOutputPath "./" # where to generate the .rb files. Le
37
37
  rake makumba_import:schema
38
38
  rake makumba_import:models
39
39
  ```
40
+
41
+ Extra:
42
+
43
+ Use
44
+
45
+ ```
46
+ SomeModel.first.toExternalForm
47
+ ```
48
+
49
+ to get the makumba pointer
@@ -216,6 +216,7 @@ module MakumbaImport
216
216
  txt << "class "+tablename.classify+" < ActiveRecord::Base\n"
217
217
  txt << " set_table_name \""+tablename+"_\"\n"
218
218
  txt << " set_primary_key \""+lastpart+"_\"\n"
219
+ txt << " set_makumba_pointer_type \""+key+"\"\n\n"
219
220
 
220
221
  table.each do |name, field|
221
222
  if name == 'ref'
@@ -231,7 +232,7 @@ module MakumbaImport
231
232
  end
232
233
  end
233
234
 
234
- txt << " fix_makumba_columns\n\n"
235
+ txt << "\n fix_makumba_columns\n"
235
236
 
236
237
  txt << "end\n\n"
237
238
 
@@ -1,4 +1,5 @@
1
1
  module LegacyMakumba
2
+
2
3
  def self.append_features(base)
3
4
  super
4
5
  base.extend(ClassMethods)
@@ -15,9 +16,48 @@ module LegacyMakumba
15
16
  end
16
17
  end
17
18
  end
19
+
20
+ def set_makumba_pointer_type(type)
21
+ self.send(:define_method, "pointer_type") { type }
22
+ end
18
23
  end
24
+
25
+ def toExternalForm
26
+ def crc(v)
27
+ r = 0
28
+ 32.times do
29
+ if (v & 1) == 1
30
+ r = r + 1
31
+ end
32
+ v = v >> 1;
33
+ end
34
+ r
35
+ end
36
+
37
+ # http://www.func09.com/wordpress/archives/228
38
+ def to_hashcode(str)
39
+ max = 2 ** 31 - 1
40
+ min = -2 ** 31
41
+ h = 0
42
+ n = str.size
43
+ n.times do |i|
44
+ h = 31 * h + str[i].ord
45
+ while h < min || max < h
46
+ h = max - ( min - h ) + 1 if h < min
47
+ h = min - ( max - h ) - 1 if max < h
48
+ end
49
+ end
50
+ h
51
+ end
52
+
53
+ n = self.id
54
+
55
+ hc = to_hashcode(pointer_type) & "ffffffffl".to_i(16)
56
+ ((crc(n) & "fl".to_i(16)) << 32 | n ^ hc).to_s(36)
57
+ end
58
+
19
59
  end
20
60
 
21
- ActiveRecord::Base.class_eval do
61
+ class ActiveRecord::Base
22
62
  include LegacyMakumba
23
63
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: makumba_import
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: