Tamar 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,81 @@
1
+ /*
2
+ * RubyLuaBridge
3
+ *
4
+ * Licensed under the BSD License:
5
+ *
6
+ * Copyright (c) 2007, Evan Wies
7
+ * All rights reserved.
8
+ *
9
+ * Redistribution and use in source and binary forms, with or without
10
+ * modification, are permitted provided that the following conditions are met:
11
+ * * Redistributions of source code must retain the above copyright
12
+ * notice, this list of conditions and the following disclaimer.
13
+ * * Redistributions in binary form must reproduce the above copyright
14
+ * notice, this list of conditions and the following disclaimer in the
15
+ * documentation and/or other materials provided with the distribution.
16
+ * * Neither the name of 'neomantra' nor the
17
+ * names of its contributors may be used to endorse or promote products
18
+ * derived from this software without specific prior written permission.
19
+ *
20
+ * THIS SOFTWARE IS PROVIDED BY Evan Wies ``AS IS'' AND ANY
21
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ * DISCLAIMED. IN NO EVENT SHALL Evan Wies BE LIABLE FOR ANY
24
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
27
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+ */
31
+
32
+ #ifndef NEOMANTRA_RUBYLUABRIDGE_H_
33
+ #define NEOMANTRA_RUBYLUABRIDGE_H_
34
+
35
+ #include <lua.h>
36
+ #include <ruby.h>
37
+
38
+ #include <boost/shared_ptr.hpp>
39
+
40
+ // Version Information
41
+ #define RUBYLUABRIDGE_VERSION ("0.7")
42
+ #define RUBYLUABRIDGE_VERSION_NUM (000700)
43
+
44
+
45
+ // shared_ptr deleter which invokes lua_close
46
+ struct lua_close_deleter
47
+ {
48
+ void operator()(lua_State* L)
49
+ {
50
+ lua_close(L);
51
+ }
52
+ };
53
+
54
+ /// Struct for our Ruby Lua::State.
55
+ /// Manages the lifetime of a lua_State using a shared_ptr
56
+ struct rlua_State
57
+ {
58
+ lua_State* getState() { return Lstate.get(); }
59
+
60
+ boost::shared_ptr<lua_State> Lstate; /// The lua_State we are wrapping
61
+ };
62
+
63
+
64
+ /// Struct for our Ruby Lua::Object.
65
+ ///
66
+ /// We use it to persist Lua object beyond its lifetime on the Lua stack.
67
+ ///
68
+ /// It uses Lua's "standard" reference system:
69
+ /// http://www.lua.org/manual/5.1/manual.html#luaL_ref
70
+ /// We follow the convention of using Lua's registry to store the references.
71
+ struct rlua_RefObject
72
+ {
73
+ lua_State* getState() { return Lstate.get(); }
74
+
75
+ boost::shared_ptr<lua_State> Lstate; /// The lua_State where the reference is held.
76
+ int Lref; /// The reference id
77
+ VALUE Rstate; /// The Ruby Lua::State where this ref came from
78
+ };
79
+
80
+
81
+ #endif // NEOMANTRA_RUBYLUABRIDGE_H_
@@ -0,0 +1,508 @@
1
+ #!/usr/bin/ruby -w
2
+
3
+ require 'rubyluabridge'
4
+ require 'stringio'
5
+ require 'test/unit'
6
+
7
+
8
+ class LuaInRuby_Test < Test::Unit::TestCase
9
+
10
+ # test module-level entities
11
+ def test_module
12
+ assert_not_nil( Lua::BRIDGE_VERSION )
13
+ assert_not_nil( Lua::BRIDGE_VERSION_NUM )
14
+ assert_not_nil( Lua::LUA_VERSION )
15
+ assert_not_nil( Lua::LUA_RELEASE )
16
+ end
17
+
18
+
19
+ # test construction of various entities
20
+ def test_construction
21
+ l = Lua::State.new
22
+
23
+ assert_instance_of Lua::State, l
24
+ assert_instance_of Lua::Table, l.__globals
25
+ assert_instance_of Lua::Table, l.__registry
26
+
27
+ assert_equal l, l.__state
28
+ assert_equal l, l.__globals.__state
29
+ assert_equal l, l.__registry.__state
30
+
31
+ assert_luastack_clean l
32
+
33
+ assert_raise TypeError do
34
+ l_bad = Lua::State.new "aa"
35
+ end
36
+ end
37
+
38
+
39
+ # test the basic types
40
+ def test_basic_types
41
+ l = Lua::State.new
42
+
43
+ # eval, and basic marshaling
44
+ assert_nil l.eval('return')
45
+ assert_nil l.eval('return nil')
46
+ assert_equal 1, l.eval('return 1')
47
+ assert_equal 1.1, l.eval('return 1.1')
48
+ assert_equal 'abc', l.eval('return "abc"')
49
+ assert_equal true, l.eval('return true')
50
+ assert_equal false, l.eval('return false')
51
+
52
+ # multi-ret
53
+ a = l.eval_mult( "return" )
54
+ assert_instance_of Array, a
55
+ assert_equal [], a
56
+ assert_equal 0, a.length
57
+ a = l.eval_mult( "return 1" )
58
+ assert_instance_of Array, a
59
+ assert_equal [1], a
60
+ assert_equal 1, a.length
61
+ a = l.eval_mult( "return 1, 2, 3, 4" )
62
+ assert_instance_of Array, a
63
+ assert_equal [1,2,3,4], a
64
+ assert_equal 4, a.length
65
+
66
+ # type id
67
+ l.eval <<LUA_END
68
+ f = function() end
69
+ t = {}
70
+ u = io.output() -- userdata
71
+ LUA_END
72
+ assert_equal Lua::TFUNCTION, l['f'].__type
73
+ assert_equal Lua::TTABLE, l.t.__type
74
+ assert_equal Lua::TUSERDATA, l.u.__type
75
+
76
+ # access queries
77
+ assert_equal true, l.indexable?
78
+ assert_equal true, l.new_indexable?
79
+ assert_equal false, l.callable?
80
+ assert_equal true, l.t.indexable?
81
+ assert_equal true, l.t.new_indexable?
82
+ assert_equal false, l.t.callable?
83
+ assert_equal false, l['f'].indexable?
84
+ assert_equal false, l['f'].new_indexable?
85
+ assert_equal true, l['f'].callable?
86
+ assert_equal true, l['u'].indexable?
87
+ assert_equal false, l['u'].new_indexable?
88
+ assert_equal false, l['u'].callable?
89
+
90
+ assert_luastack_clean l
91
+ end
92
+
93
+
94
+ # test setters
95
+ def test_setters
96
+ l = Lua::State.new
97
+
98
+ l.v = 5 ; assert_equal 5, l.v
99
+ l.a = {} ; assert_instance_of Lua::Table, l.a
100
+ l.a.v = 7 ; assert_equal 7, l.a.v
101
+
102
+ l['b'] = 6 ; assert_equal 6, l.b
103
+ l.a['b'] = 7 ; assert_equal 7, l.a.b
104
+
105
+ assert_luastack_clean l
106
+ end
107
+
108
+
109
+ # test libraries
110
+ def test_libraries
111
+ # invoking libraries
112
+ l = Lua::State.new
113
+ assert_nothing_thrown do
114
+ STDOUT << "you should see-> Hello from Lua!-> "
115
+ l.eval( 'print "Hello from Lua!"' )
116
+ STDOUT << "you should see-> Hello again from Lua!-> "
117
+ l.print "Hello again from Lua!"
118
+ end
119
+ assert_luastack_clean l
120
+
121
+ # loading libraries
122
+ #####################
123
+
124
+ l = Lua::State.new # all
125
+ count = 0 ; l.__globals.each_key { |k| count += 1 }
126
+ assert_equal 39, count
127
+ assert_instance_of Lua::RefObject, l['ipairs'] # base library check
128
+ assert_instance_of Lua::Table, l.package
129
+ assert_instance_of Lua::Table, l.table
130
+ assert_instance_of Lua::Table, l.io
131
+ assert_instance_of Lua::Table, l.os
132
+ assert_instance_of Lua::Table, l.string
133
+ assert_instance_of Lua::Table, l.math
134
+ assert_instance_of Lua::Table, l.debug
135
+
136
+ l = Lua::State.new( :loadlibs => :all )
137
+ count = 0 ; l.__globals.each_key { |k| count += 1 }
138
+ assert_equal 39, count
139
+ assert_instance_of Lua::RefObject, l['ipairs'] # base library check
140
+ assert_instance_of Lua::Table, l.package
141
+ assert_instance_of Lua::Table, l.table
142
+ assert_instance_of Lua::Table, l.io
143
+ assert_instance_of Lua::Table, l.os
144
+ assert_instance_of Lua::Table, l.string
145
+ assert_instance_of Lua::Table, l.math
146
+ assert_instance_of Lua::Table, l.debug
147
+
148
+ l = Lua::State.new( :loadlibs => :none )
149
+ count = 0 ; l.__globals.each_key { |k| count += 1 }
150
+ assert_equal 0, count
151
+
152
+ l = Lua::State.new( :loadlibs => :base )
153
+ assert_instance_of Lua::RefObject, l['ipairs'] # base library check
154
+ assert_equal nil, l.string
155
+ l = Lua::State.new( :loadlibs => :package )
156
+ assert_instance_of Lua::Table, l.package
157
+ assert_equal nil, l.string
158
+ l = Lua::State.new( :loadlibs => :table )
159
+ assert_instance_of Lua::Table, l.table
160
+ assert_equal nil, l.string
161
+ l = Lua::State.new( :loadlibs => :io )
162
+ assert_instance_of Lua::Table, l.io
163
+ assert_equal nil, l.string
164
+ l = Lua::State.new( :loadlibs => :os )
165
+ assert_instance_of Lua::Table, l.os
166
+ assert_equal nil, l.string
167
+ l = Lua::State.new( :loadlibs => :string )
168
+ assert_instance_of Lua::Table, l.string
169
+ assert_equal nil, l.io
170
+ l = Lua::State.new( :loadlibs => :math )
171
+ assert_instance_of Lua::Table, l.math
172
+ assert_equal nil, l.string
173
+ l = Lua::State.new( :loadlibs => :debug )
174
+ assert_instance_of Lua::Table, l.debug
175
+ assert_equal nil, l.string
176
+
177
+ l = Lua::State.new( :loadlibs => [:base, :package, :io] )
178
+ assert_instance_of Lua::RefObject, l['ipairs'] # base library check
179
+ assert_instance_of Lua::Table, l.package
180
+ assert_instance_of Lua::Table, l.io
181
+ end
182
+
183
+
184
+ # test table creation from ruby
185
+ def test_table_creation_from_ruby
186
+ l = Lua::State.new
187
+
188
+ l.eval( "a = {}")
189
+ assert_instance_of Lua::Table, l.a
190
+
191
+ s = "return {1,2,3}"
192
+ assert_instance_of Lua::Table, l.eval(s)
193
+ assert_equal 3, l.eval(s).__length
194
+ assert_equal [1,2,3], l.eval(s).to_array
195
+
196
+ b = l.new_table_at 'b'
197
+ assert_instance_of Lua::Table, b
198
+ assert_instance_of Lua::Table, l.b
199
+
200
+ b = l.a.new_table_at 'b'
201
+ assert_instance_of Lua::Table, b
202
+ assert_instance_of Lua::Table, l.a.b
203
+
204
+ l.c = []
205
+ assert_instance_of Lua::Table, l.c
206
+ assert_equal 0, l.c.__length
207
+
208
+ l.d = {}
209
+ assert_instance_of Lua::Table, l.d
210
+ assert_equal 0, l.d.__length
211
+
212
+ e = [1,2,3,4]
213
+ l.e = e
214
+ assert_equal 1, l.e[1]
215
+ assert_equal 2, l.e[2]
216
+ assert_equal 3, l.e[3]
217
+ assert_equal 4, l.e[4]
218
+ assert_equal e, l.e.to_array
219
+ assert_instance_of Lua::Table, l.e
220
+
221
+ f = { 1=>1, 2=>2, 'a'=>3, 'b'=>4 }
222
+ l.f = f
223
+ assert_equal 1, l.f[1]
224
+ assert_equal 2, l.f[2]
225
+ assert_equal 3, l.f['a']
226
+ assert_equal 4, l.f['b']
227
+ assert_equal 2, l.f.__length
228
+ assert_instance_of Lua::Table, l.f
229
+
230
+ assert_luastack_clean l
231
+ end
232
+
233
+
234
+ # test table accesses
235
+ def test_table_access
236
+ l = Lua::State.new
237
+ l.eval <<LUA_END
238
+ a = { 1, 2, 3, 4 }
239
+ h = { a='x', b='y',
240
+ [true] = 'a',
241
+ [false] = 'b',
242
+ [1.3] = 'z', }
243
+ h2 = { a='x', b='y', }
244
+ LUA_END
245
+
246
+ assert_instance_of Lua::Table, l.a
247
+ assert_instance_of Lua::Table, l.h
248
+ assert_instance_of Lua::Table, l.h2
249
+ assert_instance_of Lua::Table, l['a']
250
+ assert_instance_of Lua::Table, l['h']
251
+ assert_instance_of Lua::Table, l['h2']
252
+
253
+ assert_nil l.a[0]
254
+ assert_equal 1, l.a[1]
255
+ assert_equal 2, l.a[2]
256
+ assert_equal 3, l.a[3]
257
+ assert_equal 4, l.a[4]
258
+ assert_equal 4, l.a.__length
259
+
260
+ assert_equal 'x', l.h.a
261
+ assert_equal 'y', l.h.b
262
+
263
+ assert_nil l.h[0]
264
+ assert_equal 'x', l.h['a']
265
+ assert_equal 'y', l.h['b']
266
+
267
+ assert_equal 'z', l.h[1.3]
268
+ assert_equal 'a', l.h[true]
269
+ assert_equal 'b', l.h[false]
270
+ assert_equal 0, l.h.__length # length only applies to Array
271
+
272
+ temp = (l.a[10] = 'x')
273
+ assert_equal 'x', temp
274
+ assert_equal 'x', l.a[10]
275
+
276
+ assert_instance_of Array, l.a.to_array
277
+ assert_instance_of Hash, l.h2.to_hash
278
+ assert_equal( [1,2,3,4], l.a.to_array)
279
+ assert_equal( {'a' => 'x','b' => 'y'}, l.h2.to_hash)
280
+
281
+ assert_luastack_clean l
282
+ end
283
+
284
+
285
+ # test table iteration
286
+ def test_table_iteration
287
+ l = Lua::State.new
288
+
289
+ # array integer iteration
290
+ l.eval( "array = { 100, 200, 300, 400 }" )
291
+ assert_instance_of Lua::Table, l.array
292
+ n = 0 ; l.array.each_ipair { |k,v| n += 1
293
+ assert_pairs_match( k, v, 1, 100 )
294
+ assert_pairs_match( k, v, 2, 200 )
295
+ assert_pairs_match( k, v, 3, 300 )
296
+ assert_pairs_match( k, v, 4, 400 )
297
+ }
298
+ assert_equal(4, n)
299
+
300
+ n = 0 ; l.array.each_ikey { |k| n += 1
301
+ assert_pairs_match( n, k, 1, 1 )
302
+ assert_pairs_match( n, k, 2, 2 )
303
+ assert_pairs_match( n, k, 3, 3 )
304
+ assert_pairs_match( n, k, 4, 4 )
305
+ assert( n <= 4 )
306
+ }
307
+ assert_equal(4, n)
308
+
309
+ sumv = n = 0 ; l.array.each_ivalue { |v| n += 1
310
+ sumv += v
311
+ assert_equal(v, n*100)
312
+ }
313
+ assert_equal(4, n) ; assert_equal(1000, sumv)
314
+
315
+ # hash integer iteration
316
+ l.eval( "hsh = { [1]=100, [2]=200, a=300, b=400, }" )
317
+ assert_instance_of Lua::Table, l.hsh
318
+ n = 0 ; l.hsh.each_ipair { |k,v| n += 1
319
+ assert_pairs_match( k, v, 1, 100 )
320
+ assert_pairs_match( k, v, 2, 200 )
321
+ assert_pairs_match( k, v, 'a', 300 )
322
+ assert_pairs_match( k, v, 'b', 400 )
323
+ }
324
+ assert_equal(2, n)
325
+
326
+ sumk = n = 0 ; l.hsh.each_ikey { |k| n += 1
327
+ sumk += k
328
+ }
329
+ assert_equal(2, n) ; assert_equal(3, sumk)
330
+
331
+ sumv = n = 0 ; l.hsh.each_ivalue { |v| n += 1
332
+ sumv += v
333
+ assert_equal(v, n*100)
334
+ }
335
+ assert_equal(2, n) ; assert_equal(300, sumv)
336
+
337
+ # array assoc iteration
338
+ l.eval( "array = { 100, 200, 300, 400 }" )
339
+ assert_instance_of Lua::Table, l.array
340
+ n = 0 ; l.array.each_pair { |k,v| n += 1
341
+ assert_pairs_match( k, v, 1, 100 )
342
+ assert_pairs_match( k, v, 2, 200 )
343
+ assert_pairs_match( k, v, 3, 300 )
344
+ assert_pairs_match( k, v, 4, 400 )
345
+ }
346
+ assert_equal(4, n)
347
+
348
+ sumk = n = 0 ; l.array.each_key { |k| n += 1
349
+ sumk += k
350
+ assert_equal(k, n)
351
+ }
352
+ assert_equal(4, n) ; assert_equal(10, sumk)
353
+
354
+ sumv = n = 0 ; l.array.each_ivalue { |v| n += 1
355
+ sumv += v
356
+ assert_equal(v, n*100)
357
+ }
358
+ assert_equal(4, n) ; assert_equal(1000, sumv)
359
+
360
+ # hash assoc iteration
361
+ l.eval( "hsh = { [1]=100, [2]=200, a=300, b=400, }" )
362
+ assert_instance_of Lua::Table, l.array
363
+ n = 0 ; l.hsh.each_pair { |k,v| n += 1
364
+ assert_pairs_match( k, v, 1, 100 )
365
+ assert_pairs_match( k, v, 2, 200 )
366
+ assert_pairs_match( k, v, 'a', 300 )
367
+ assert_pairs_match( k, v, 'b', 400 )
368
+ }
369
+ assert_equal( n, 4)
370
+
371
+ n = 0 ; l.hsh.each_key { |k| n += 1
372
+ assert_pairs_match( n, k, 1, 100 )
373
+ assert_pairs_match( n, k, 2, 200 )
374
+ assert_pairs_match( n, k, 3, 'a' )
375
+ assert_pairs_match( n, k, 4, 'b' )
376
+ }
377
+ assert_equal( n, 4)
378
+
379
+ n = sumv = 0 ; l.hsh.each_value { |v| n += 1
380
+ sumv += v
381
+ }
382
+ assert_equal(4, n) ; assert_equal( sumv, 1000)
383
+
384
+ # done iteration tests
385
+ assert_luastack_clean l
386
+ end
387
+
388
+
389
+ # test method dispatch
390
+ def test_method_dispatch
391
+ l = Lua::State.new
392
+ l.eval <<END_OF_LUA
393
+ str = "a"
394
+ function uniret() return 1 end
395
+ function uniret2(a) return a end
396
+ function multiret() return 1, 2, 3 end
397
+ function multiret2(a,b) return 1, a, b end
398
+
399
+ t = {}
400
+ t.str = "a"
401
+ t.uniret = uniret
402
+ t.uniret2 = uniret2
403
+ t.multiret = multiret
404
+ t.multiret2 = multiret2
405
+ END_OF_LUA
406
+
407
+ assert_equal 'a', l.str
408
+ assert_equal 'a', l.t.str
409
+ assert_equal 'a', l.str() # ugly, but Ruby
410
+ assert_equal 'a', l.t.str() # ugly, but Ruby
411
+ assert_kind_of String, l.str
412
+ assert_kind_of String, l.t.str
413
+ assert_raise RuntimeError do l.str_ end
414
+ assert_raise RuntimeError do l.str! end
415
+ assert_raise RuntimeError do l.str(2) end
416
+
417
+ assert_kind_of Lua::RefObject, l['uniret']
418
+ assert_kind_of Float, l.uniret
419
+ assert_kind_of Float, l.uniret_
420
+ assert_equal 1, l.uniret()
421
+ assert_equal 1, l.uniret_
422
+ assert_equal 1, l.t.uniret
423
+ assert_equal 1, l.t.uniret()
424
+ assert_equal 2, l.uniret2(2)
425
+ assert_equal 2, l.t.uniret2(2)
426
+ r = l.uniret2 2 ; assert_equal 2, r
427
+ r = l.t.uniret2 2 ; assert_equal 2, r
428
+
429
+ assert_equal [1,2,3], l.multiret
430
+ assert_equal [1,2,3], l.multiret()
431
+ assert_equal [1,2,3], l.t.multiret
432
+ assert_equal [1,2,3], l.t.multiret()
433
+ assert_equal [1,5,6], l.multiret2( 5, 6 )
434
+ assert_equal [1,5,6], l.t.multiret2( 5, 6 )
435
+ r = l.multiret2 5, 6 ; assert_equal [1,5,6], r
436
+ r = l.t.multiret2 5, 6 ; assert_equal [1,5,6], r
437
+
438
+ assert_luastack_clean l
439
+ end
440
+
441
+
442
+ # test classes
443
+ def test_classes
444
+ l = Lua::State.new
445
+
446
+ l.eval <<END_LUA
447
+ Account = {
448
+ balance = 0,
449
+ deposit = function( self, v )
450
+ print "testing testing testing"
451
+ self.balance = self.balance + v
452
+ end,
453
+ }
454
+ END_LUA
455
+ assert_equal Lua::Table, l.Account.class
456
+ assert_equal 0, l.Account.balance
457
+ assert_nothing_thrown { l.Account.deposit! 100 }
458
+ assert_equal 100, l.Account.balance
459
+ # DO WE WANT TO DO ANYTHING LIKE THIS?
460
+ #assert_nothing_thrown { l.Account.!deposit 50 }
461
+ #assert_equal 150, l.Account.balance
462
+ #assert_nothing_thrown { l.Account.!deposit! 25 }
463
+ #assert_equal 175, l.Account.balance
464
+
465
+ assert_luastack_clean l
466
+ end
467
+
468
+
469
+ # test exceptions
470
+ def test_exceptions
471
+ l = Lua::State.new
472
+
473
+ assert_raise SyntaxError do
474
+ l.eval( 'if !exclamation_doesnt_work then return 0 end' )
475
+ end
476
+
477
+ assert_raise RuntimeError do
478
+ l.eval( 'error("42")' )
479
+ end
480
+
481
+ assert_luastack_clean l
482
+ end
483
+
484
+ # test garbage collection
485
+ # makes sure various C-based objects are properly cleaned
486
+ def test_garbage_collection
487
+ 50.times do
488
+ l = Lua::State.new
489
+ g = l.__globals
490
+ l = g = nil
491
+ GC.start
492
+ end
493
+ end
494
+
495
+
496
+ # asserts that the state's stack is empty
497
+ # incorrectly implemented Lua API blocks will trigger this
498
+ def assert_luastack_clean( lstate )
499
+ assert_equal 0, lstate.__top
500
+ end
501
+
502
+ # assert that a given key/value pair match an expected key/value pair
503
+ def assert_pairs_match( key, val, expected_key, expected_val )
504
+ assert_equal(key, expected_key) if val == expected_val
505
+ end
506
+
507
+ end
508
+
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: Tamar
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.7.3
5
+ version: 0.7.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Evan Wies, David Love
@@ -105,8 +105,8 @@ description: "See: http://rubyluabridge.rubyforge.org"
105
105
  email: david@homeunix.org.uk
106
106
  executables: []
107
107
 
108
- extensions: []
109
-
108
+ extensions:
109
+ - src/build/extconf.rb
110
110
  extra_rdoc_files:
111
111
  - LICENSE.txt
112
112
  - README.rdoc
@@ -122,6 +122,7 @@ files:
122
122
  - Rakefile
123
123
  - Tamar.gemspec
124
124
  - VERSION
125
+ - src/build/extconf.rb
125
126
  - src/luadist/CMakeLists.txt
126
127
  - src/luadist/COPYRIGHT
127
128
  - src/luadist/README
@@ -147,6 +148,29 @@ files:
147
148
  - src/luadist/doc/modules/dist.persist.html
148
149
  - src/luadist/doc/modules/dist.sys.html
149
150
  - src/luadist/luadist
151
+ - src/rubyluabridge/.hg_archival.txt
152
+ - src/rubyluabridge/.project
153
+ - src/rubyluabridge/LICENSE
154
+ - src/rubyluabridge/LUA_IN_RUBY
155
+ - src/rubyluabridge/README
156
+ - src/rubyluabridge/RUBY_IN_LUA
157
+ - src/rubyluabridge/Rakefile
158
+ - src/rubyluabridge/build/extconf_osx.sh
159
+ - src/rubyluabridge/build/extconf_ubuntu.sh
160
+ - src/rubyluabridge/debian/changelog
161
+ - src/rubyluabridge/debian/compat
162
+ - src/rubyluabridge/debian/control
163
+ - src/rubyluabridge/debian/copyright
164
+ - src/rubyluabridge/debian/libluabridge-ruby1.8.doc-base
165
+ - src/rubyluabridge/debian/libluabridge-ruby1.8.docs
166
+ - src/rubyluabridge/debian/libluabridge-ruby1.8.install
167
+ - src/rubyluabridge/debian/rules
168
+ - src/rubyluabridge/debian/watch
169
+ - src/rubyluabridge/doc/jamis.rb
170
+ - src/rubyluabridge/extconf.rb
171
+ - src/rubyluabridge/rubyluabridge.cc
172
+ - src/rubyluabridge/rubyluabridge.h
173
+ - src/rubyluabridge/tests/lua_in_ruby_test.rb
150
174
  has_rdoc: true
151
175
  homepage: http://rubyluabridge.rubyforge.org
152
176
  licenses:
@@ -161,7 +185,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
185
  requirements:
162
186
  - - ">="
163
187
  - !ruby/object:Gem::Version
164
- hash: 2597924468305270284
188
+ hash: 3767394104657576971
165
189
  segments:
166
190
  - 0
167
191
  version: "0"