divine 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/.gitignore +30 -0
  2. data/README.md +57 -0
  3. data/Rakefile +45 -18
  4. data/lib/divine.rb +3 -3
  5. data/lib/divine/code_generators/code_generator.rb +112 -14
  6. data/lib/divine/code_generators/java.rb +144 -80
  7. data/lib/divine/code_generators/javascript.rb +192 -104
  8. data/lib/divine/code_generators/ruby.rb +133 -60
  9. data/lib/divine/dsl.rb +70 -12
  10. data/lib/divine/version.rb +1 -1
  11. data/test/basic_complex_test/js_test/js_testBasic.js +1 -1
  12. data/test/basic_complex_test/js_test/js_testComplex.js +1 -1
  13. data/test/basic_complex_test/ruby_test/ruby_test.rb +10 -10
  14. data/test/binaryTree_test/js_test/js_test.js +1 -1
  15. data/test/binaryTree_test/ruby_test/ruby_test.rb +4 -4
  16. data/test/complex_test/js_test/js_test.js +3 -2
  17. data/test/ipv6_test/java_test/JavaTest.java +4 -6
  18. data/test/ipv6_test/js_test/js_test.js +1 -1
  19. data/test/signed_float_test/ruby_test/ruby_test.rb +36 -0
  20. data/test/signed_float_test/signed_float_test.rb +14 -0
  21. data/test/signed_int_test/java_test/JavaTest.java +83 -0
  22. data/test/signed_int_test/js_test/js_test.js +55 -0
  23. data/test/signed_int_test/ruby_test/ruby_test.rb +37 -0
  24. data/test/signed_int_test/signed_int_test.rb +15 -0
  25. data/test/unify_test/unify_test.rb +24 -13
  26. metadata +14 -38
  27. data/test/basic_complex_test/java_test/test_babel.java +0 -368
  28. data/test/basic_complex_test/js_test/test_babel.js +0 -523
  29. data/test/basic_complex_test/ruby_test/test_babel.rb +0 -368
  30. data/test/binaryTree_test/java_test/test_binaryTree.java +0 -301
  31. data/test/binaryTree_test/js_test/test_binaryTree.js +0 -447
  32. data/test/binaryTree_test/ruby_test/test_binaryTree.rb +0 -303
  33. data/test/complex_test/java_test/test_complex.java +0 -331
  34. data/test/complex_test/js_test/test_complex.js +0 -478
  35. data/test/complex_test/ruby_test/test_complex.rb +0 -330
  36. data/test/ipv6_test/java_test/junit.jar +0 -0
  37. data/test/ipv6_test/java_test/test_ipv6.java +0 -270
  38. data/test/ipv6_test/js_test/test_ipv6.js +0 -409
  39. data/test/ipv6_test/ruby_test/test_ipv6.rb +0 -267
  40. data/test/unify_test/java_test/test_unify.java +0 -171
  41. data/test/unify_test/js_test/js_test.js +0 -56
  42. data/test/unify_test/js_test/test_unify.js +0 -326
  43. data/test/unify_test/ruby_test/ruby_test.rb +0 -35
  44. data/test/unify_test/ruby_test/test_unify.rb +0 -187
@@ -1,35 +0,0 @@
1
- require_relative 'test_unify.rb'
2
- require 'minitest/autorun'
3
-
4
- class TestBabelTestBasic < MiniTest::Unit::TestCase
5
-
6
- def test_unify
7
- obj_ser = BabelTest::UnifySer.new
8
- obj_ser.map1 = {2 => 15, 3 => 16}
9
- obj_ser.str = "What is This?"
10
- #ser = obj.serialize
11
- #serialize(ser)
12
- res = deserialize()
13
-
14
- obj_deser = BabelTest::UnifySer.new
15
- obj_deser.deserialize res
16
- compare(obj_ser, obj_deser)
17
-
18
- end
19
-
20
- def compare(obj_ser, obj_deser)
21
- puts obj_deser.str
22
- assert obj_ser.map1 == obj_deser.map1
23
- end
24
-
25
- def serialize(data)
26
- File.open("bin.babel.rb", "w+b") do |f|
27
- f.write(data)
28
- end
29
- end
30
-
31
- def deserialize()
32
- mem_buf = File.new('bin.babel.js').binmode
33
- end
34
-
35
- end
@@ -1,187 +0,0 @@
1
- module BabelTest
2
-
3
-
4
- class BabelBase < Object
5
- public
6
- def serialize
7
- out = []
8
- serialize_internal(out)
9
- out.flatten.pack("C*")
10
- end
11
-
12
- protected
13
- ### Read methods ###
14
- def read_int8(data)
15
- data.getbyte
16
- end
17
-
18
- def read_int16(data)
19
- (data.getbyte << 8) | read_int8(data)
20
- end
21
-
22
- def read_int24(data)
23
- (data.getbyte << 16) | read_int16(data)
24
- end
25
-
26
- def read_int32(data)
27
- (data.getbyte << 24) | read_int24(data)
28
- end
29
-
30
- def read_bool(data)
31
- read_int8(data) == 1
32
- end
33
-
34
- def read_string(data)
35
- data.read(read_int16(data)).force_encoding('UTF-8')
36
- end
37
-
38
- def read_binary(data)
39
- data.read(read_int32(data))
40
- end
41
-
42
- def read_short_binary(data)
43
- data.read(read_int8(data))
44
- end
45
-
46
- def read_ip_number(data)
47
- read_short_binary(data).bytes.to_a.join('.')
48
- end
49
-
50
- ### Write methods ###
51
- def write_int8(v, out)
52
- v = v.to_i
53
- raise_error "Too large int8 number: #{v}" if v > 0xFF # Max 255
54
- out << v
55
- end
56
-
57
- def write_int16(v, out)
58
- v = v.to_i
59
- raise_error "Too large int16 number: #{v}" if v > 0xFFFF # Max 65.535
60
- write_int8( v >> 8 & 0xFF, out)
61
- write_int8( v & 0xFF, out)
62
- end
63
-
64
- def write_int24(v, out)
65
- v = v.to_i
66
- raise_error "Too large int24 number: #{v}" if v > 0xFFFFFF # Max 16.777.215
67
- write_int8( v >> 16 & 0xFF, out)
68
- write_int16( v & 0xFFFF, out)
69
- end
70
-
71
- def write_int32(v, out)
72
- v = v.to_i
73
- raise_error "Too large int32 number: #{v}" if v > 0xFFFFFFFF # Max 4.294.967.295
74
- write_int8( v >> 24 & 0xFF, out)
75
- write_int24( v & 0xFFFFFF, out)
76
- end
77
-
78
- def write_bool(v, out)
79
- write_int8(v ? 1 : 0, out)
80
- end
81
-
82
- def write_string(v, out)
83
- s = force_to_utf8_string(v)
84
- raise_error "Too large string: #{s.bytesize} bytes" if s.bytesize > 0xFFFF
85
- write_int16(s.bytesize, out)
86
- out << s.bytes.to_a
87
- end
88
-
89
- def write_binary(v, out)
90
- if v.is_a?(Array)
91
- raise_error "Too large binary: #{v.size} (#{v.class.name})" unless v.size < 0xFFFFFFFF
92
- write_int32(v.size, out)
93
- v.each do |x|
94
- write_int8(x, out)
95
- end
96
- elsif v.is_a?(String)
97
- raise_error "Too large binary: #{v.size} (#{v.class.name})" unless v.size < 0xFFFFFFFF
98
- write_int32(v.size, out)
99
- out << v.bytes.to_a
100
- else
101
- raise_error "Unsupported binary 'nil'" if v == nil
102
- raise_error "Unsupported binary of type '#{v.class.name}'"
103
- end
104
- end
105
-
106
- def write_short_binary(v, out)
107
- if v.is_a?(Array)
108
- raise_error "Too large short_binary: #{v.size} (#{v.class.name})" unless v.size < 0xFF
109
- write_int8(v.size, out)
110
- v.each do |x|
111
- write_int8(x, out)
112
- end
113
- elsif v.is_a?(String)
114
- raise_error "To large short_binary: #{v.size} (#{v.class.name})" unless v.size < 0xFF
115
- write_int8(v.size, out)
116
- out << v.bytes.to_a
117
- else
118
- raise_error "Unsupported binary 'nil'" if v == nil
119
- raise_error "Unsupported binary of type '#{v.class.name}'"
120
- end
121
- end
122
-
123
- def write_ip_number(v, out)
124
- if v.is_a?(Array)
125
- raise_error "Unknown IP v4 number #{v}" unless v.size == 0 || v.size == 4 # Only IPv4 for now
126
- write_short_binary(v, out)
127
- elsif v.is_a?(String)
128
- ss = v.split(/\./).map do |s|
129
- s.to_i
130
- end
131
- write_ip_number(ss, out)
132
- else
133
- raise_error "Unknown IP number '#{v}'"
134
- end
135
- end
136
-
137
- private
138
- def raise_error(msg)
139
- raise "[#{self.class.name}] #{msg}"
140
- end
141
-
142
- def force_to_utf8_string(string)
143
- if string.encoding != Encoding::UTF_8
144
- string = string.encode(Encoding::UTF_8)
145
- end
146
- return string
147
- end
148
- end
149
-
150
-
151
-
152
- class UnifySer < BabelBase
153
- attr_accessor :str, :map1
154
-
155
- def initialize()
156
- super
157
- @str ||= ""
158
- @map1 ||= {}
159
- end
160
-
161
- def serialize_internal(out)
162
- print "+"
163
- write_string(str, out)
164
- # Serialize map 'map1'
165
- write_int32(map1.size, out)
166
- map1.each_pair do |var_100, var_101|
167
- write_int8(var_100, out)
168
- write_int32(var_101, out)
169
- end
170
- end
171
-
172
- def deserialize(data)
173
- print "-"
174
- @str = read_string(data)
175
- # Deserialize map 'map1'
176
- @map1 = {}
177
- var_102 = read_int32(data)
178
- (1..var_102).each do
179
- var_103 = read_int8(data)
180
- var_104 = read_int32(data)
181
- @map1[var_103] = var_104
182
- end
183
- end
184
- end
185
-
186
-
187
- end