ruby-lua 0.3.0 → 0.4.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.
- checksums.yaml +7 -0
- data/.gitignore +29 -0
- data/Gemfile +2 -14
- data/Gemfile.lock +29 -14
- data/README.rdoc +2 -2
- data/Rakefile +19 -34
- data/VERSION +1 -1
- data/examples/test.lua +3 -3
- data/ext/extconf.rb +48 -22
- data/ext/rlua.c +105 -14
- data/ext/rlua.h +3 -2
- data/ext/util.c +30 -0
- data/ext/util.h +7 -0
- data/lib/language/lua/function.rb +11 -0
- data/lib/ruby-lua.rb +1 -0
- data/ruby-lua.gemspec +27 -0
- data/test/helper.rb +11 -12
- data/test/test_lua_from_ruby.rb +34 -0
- data/test/test_lua_function.rb +25 -0
- data/test/test_ruby_from_lua.rb +22 -0
- data/test/test_vars.rb +48 -0
- metadata +86 -113
- data/test/test_ruby-lua.rb +0 -7
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 90979ca5da80b6a4c4f271d82635e741270824fc
|
4
|
+
data.tar.gz: a8b68ebcfa8d8303ff4d31fa02d34be07dc27213
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ef5523c5f19f020f54cbada929185839c82a092d1c3e86aefe119350aeb0c857699aa894eb9502ac7691274560b7f3e9382984b7736e6ea3d241aaf8c0d1ef09
|
7
|
+
data.tar.gz: d475870087b3db055e8fea91037b4bef14981ef4310b765653df1767c4c5e3d56a970d26b3a8628a284f48a6452c611244513698bc1b4545df907ba541cff874
|
data/.gitignore
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# rcov generated
|
2
|
+
coverage
|
3
|
+
|
4
|
+
# rdoc generated
|
5
|
+
rdoc
|
6
|
+
|
7
|
+
# yard generated
|
8
|
+
doc
|
9
|
+
.yardoc
|
10
|
+
|
11
|
+
# bundler
|
12
|
+
.bundle
|
13
|
+
|
14
|
+
# jeweler generated
|
15
|
+
pkg
|
16
|
+
|
17
|
+
# For MacOS:
|
18
|
+
.DS_Store
|
19
|
+
.rake_tasks
|
20
|
+
|
21
|
+
# For ext
|
22
|
+
Makefile
|
23
|
+
ext/config.h
|
24
|
+
*.bundle
|
25
|
+
*.so
|
26
|
+
*.dll
|
27
|
+
*.swp
|
28
|
+
*.log
|
29
|
+
*.o
|
data/Gemfile
CHANGED
@@ -1,14 +1,2 @@
|
|
1
|
-
source "
|
2
|
-
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
|
-
|
6
|
-
# Add dependencies to develop your gem here.
|
7
|
-
# Include everything needed to run rake, tests, features, etc.
|
8
|
-
group :development do
|
9
|
-
gem "shoulda", ">= 0"
|
10
|
-
gem "bundler", "~> 1.0.0"
|
11
|
-
gem "jeweler", "~> 1.5.1"
|
12
|
-
gem "rcov", ">= 0"
|
13
|
-
gem "rdoc", ">=0"
|
14
|
-
end
|
1
|
+
source "https://rubygems.org"
|
2
|
+
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,24 +1,39 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
ruby-lua (0.4.0)
|
5
|
+
|
1
6
|
GEM
|
2
|
-
remote:
|
7
|
+
remote: https://rubygems.org/
|
3
8
|
specs:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
activesupport (3.2.13)
|
10
|
+
i18n (= 0.6.1)
|
11
|
+
multi_json (~> 1.0)
|
12
|
+
bourne (1.4.0)
|
13
|
+
mocha (~> 0.13.2)
|
14
|
+
i18n (0.6.1)
|
15
|
+
json (1.7.7)
|
16
|
+
metaclass (0.0.1)
|
17
|
+
mocha (0.13.3)
|
18
|
+
metaclass (~> 0.0.1)
|
19
|
+
multi_json (1.7.2)
|
20
|
+
rake (10.0.4)
|
21
|
+
rdoc (4.0.1)
|
13
22
|
json (~> 1.4)
|
14
|
-
shoulda (
|
23
|
+
shoulda (3.4.0)
|
24
|
+
shoulda-context (~> 1.0, >= 1.0.1)
|
25
|
+
shoulda-matchers (~> 1.0, >= 1.4.1)
|
26
|
+
shoulda-context (1.1.1)
|
27
|
+
shoulda-matchers (1.5.6)
|
28
|
+
activesupport (>= 3.0.0)
|
29
|
+
bourne (~> 1.3)
|
15
30
|
|
16
31
|
PLATFORMS
|
17
32
|
ruby
|
18
33
|
|
19
34
|
DEPENDENCIES
|
20
|
-
bundler
|
21
|
-
|
22
|
-
rcov
|
35
|
+
bundler
|
36
|
+
rake
|
23
37
|
rdoc
|
38
|
+
ruby-lua!
|
24
39
|
shoulda
|
data/README.rdoc
CHANGED
@@ -33,7 +33,7 @@ Load a Lua Script
|
|
33
33
|
Call the Lua function named <lua_function>
|
34
34
|
This is equivalent to
|
35
35
|
|
36
|
-
|
36
|
+
Language::Lua.call( false, "<lua_function>", ... )
|
37
37
|
|
38
38
|
=== Language::Lua.call( [true|false], "<lua_function>", ... )
|
39
39
|
|
@@ -69,6 +69,6 @@ In your Lua code, call <ruby_function>.
|
|
69
69
|
|
70
70
|
== Copyright
|
71
71
|
|
72
|
-
Copyright (c) 2010 Gregoire Lejeune. See LICENSE.txt for
|
72
|
+
Copyright (c) 2010-2013 Gregoire Lejeune. See LICENSE.txt for
|
73
73
|
further details.
|
74
74
|
|
data/Rakefile
CHANGED
@@ -1,49 +1,19 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
3
|
require 'rake'
|
11
|
-
|
12
|
-
require 'jeweler'
|
13
|
-
Jeweler::Tasks.new do |gem|
|
14
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
15
|
-
gem.name = "ruby-lua"
|
16
|
-
gem.homepage = "http://github.com/glejeune/ruby-lua"
|
17
|
-
gem.license = "MIT"
|
18
|
-
gem.summary = %Q{Call Lua from Ruby (and Ruby from Lua in Ruby)}
|
19
|
-
gem.description = %Q{Call Lua from Ruby (and Ruby from Lua in Ruby)}
|
20
|
-
gem.email = "gregoire.lejeune@free.fr"
|
21
|
-
gem.authors = ["Gregoire Lejeune"]
|
22
|
-
gem.extensions = FileList["ext/**/extconf.rb"].to_a
|
23
|
-
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
24
|
-
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
25
|
-
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
26
|
-
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
27
|
-
end
|
28
|
-
Jeweler::RubygemsDotOrgTasks.new
|
29
|
-
|
30
4
|
require 'rake/testtask'
|
5
|
+
require 'rubygems/package_task'
|
6
|
+
require 'rdoc/task'
|
7
|
+
|
31
8
|
Rake::TestTask.new(:test) do |test|
|
32
9
|
test.libs << 'lib' << 'test'
|
33
10
|
test.pattern = 'test/**/test_*.rb'
|
34
11
|
test.verbose = true
|
35
12
|
end
|
36
|
-
|
37
|
-
require 'rcov/rcovtask'
|
38
|
-
Rcov::RcovTask.new do |test|
|
39
|
-
test.libs << 'test'
|
40
|
-
test.pattern = 'test/**/test_*.rb'
|
41
|
-
test.verbose = true
|
42
|
-
end
|
13
|
+
task :test => :compile
|
43
14
|
|
44
15
|
task :default => :test
|
45
16
|
|
46
|
-
require 'rdoc/task'
|
47
17
|
RDoc::Task.new do |rdoc|
|
48
18
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
49
19
|
|
@@ -52,3 +22,18 @@ RDoc::Task.new do |rdoc|
|
|
52
22
|
rdoc.rdoc_files.include('README*')
|
53
23
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
54
24
|
end
|
25
|
+
|
26
|
+
task :compile do
|
27
|
+
chdir 'ext' do
|
28
|
+
ruby 'extconf.rb'
|
29
|
+
sh 'make'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
task :clean do
|
34
|
+
chdir 'ext' do
|
35
|
+
sh 'rm -f *.bundle *.dll *.so *.o *.obj Makefile config.h mkmf.log'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
Bundler::GemHelper.install_tasks
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/examples/test.lua
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
-- defines a factorial function
|
2
|
-
function fact
|
2
|
+
function fact(n)
|
3
3
|
if n == 0 then
|
4
4
|
return 1
|
5
5
|
else
|
@@ -8,7 +8,7 @@ function fact (n)
|
|
8
8
|
end
|
9
9
|
|
10
10
|
-- define a stupid function
|
11
|
-
function hello(
|
11
|
+
function hello()
|
12
12
|
return "world"
|
13
13
|
end
|
14
14
|
|
@@ -18,4 +18,4 @@ str = "blah blah blah"
|
|
18
18
|
-- define a number variable
|
19
19
|
num = 123
|
20
20
|
|
21
|
-
fact(
|
21
|
+
fact(3)
|
data/ext/extconf.rb
CHANGED
@@ -2,48 +2,65 @@
|
|
2
2
|
# See the LICENSE file for copyright and distribution information
|
3
3
|
|
4
4
|
require "mkmf"
|
5
|
+
init_mkmf
|
5
6
|
|
6
|
-
$LIBPATH.push(
|
7
|
+
$LIBPATH.push(RbConfig::CONFIG['libdir'])
|
7
8
|
|
8
9
|
def crash(str)
|
9
10
|
printf(" extconf failure: %s\n", str)
|
10
11
|
exit 1
|
11
12
|
end
|
12
13
|
|
13
|
-
lib = ""
|
14
|
-
|
15
|
-
#unless have_library( 'm', 'atan' )
|
16
|
-
# crash( 'need libm' )
|
17
|
-
#end
|
18
14
|
if /^1.8/.match RUBY_VERSION
|
19
|
-
|
15
|
+
$CFLAGS << " -DRUBY_1_8"
|
20
16
|
end
|
21
17
|
|
22
18
|
if dir_config( "lua50" ) != [nil, nil]
|
23
|
-
|
24
|
-
|
25
|
-
|
19
|
+
inc, lib = dir_config( 'lua50' )
|
20
|
+
$LDFLAGS << " -L#{lib} -llualib50 -llua50"
|
21
|
+
$CFLAGS << " -I#{inc}"
|
26
22
|
elsif dir_config( "lua" ) != [nil, nil]
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
inc, lib = dir_config( 'lua' )
|
24
|
+
$LDFLAGS << " -L#{lib} -llualib -llua"
|
25
|
+
$CFLAGS << " -I#{inc}"
|
26
|
+
elsif dir_config( "lua51" ) != [nil, nil]
|
27
|
+
inc, lib = dir_config( 'lua51' )
|
28
|
+
$LDFLAGS << " -L#{lib} -llua5.1"
|
29
|
+
$CFLAGS << " -I#{inc}"
|
30
|
+
elsif dir_config( "lua52" ) != [nil, nil]
|
31
|
+
inc, lib = dir_config( 'lua52' )
|
32
|
+
$LDFLAGS << " -L#{lib} -llua5.2"
|
33
|
+
$CFLAGS << " -I#{inc}"
|
30
34
|
elsif ex = find_executable( "lua-config" )
|
31
|
-
|
32
|
-
|
35
|
+
$LDFLAGS << ' ' + `#{ex} --libs`.chomp
|
36
|
+
$CFLAGS << ' ' + `#{ex} --include`.chomp
|
33
37
|
elsif ex = find_executable( "pkg-config" )
|
34
|
-
|
35
|
-
|
38
|
+
["lua", "lua5.1", "lua5.2"].any? do |l|
|
39
|
+
ldf = `#{ex} --libs #{l}`.chomp
|
40
|
+
cf = `#{ex} --cflags #{l}`.chomp
|
41
|
+
next false if ldf.empty? or cf.empty?
|
42
|
+
|
43
|
+
$LDFLAGS << " #{ldf}"
|
44
|
+
$CFLAGS << " #{cf}"
|
45
|
+
true
|
46
|
+
end
|
36
47
|
else
|
37
48
|
crash(<<EOL)
|
38
|
-
need
|
49
|
+
need lua
|
39
50
|
|
40
51
|
Install the library or try one of the following options to extconf.rb:
|
41
52
|
|
42
53
|
--with-lua-lib=/path/to/liblua/lib
|
43
54
|
--with-lua-include=/path/to/liblua/include
|
44
|
-
|
55
|
+
or
|
45
56
|
--with-lua50-lib=/path/to/liblua/lib
|
46
57
|
--with-lua50-include=/path/to/liblua/include
|
58
|
+
or
|
59
|
+
--with-lua51-lib=/path/to/liblua/lib
|
60
|
+
--with-lua51-include=/path/to/liblua/include
|
61
|
+
or
|
62
|
+
--with-lua52-lib=/path/to/liblua/lib
|
63
|
+
--with-lua52-include=/path/to/liblua/include
|
47
64
|
EOL
|
48
65
|
end
|
49
66
|
|
@@ -55,7 +72,7 @@ need liblua50 (headers not found)
|
|
55
72
|
|
56
73
|
--with-lua-lib=/path/to/liblua/lib
|
57
74
|
--with-lua-include=/path/to/liblua/include
|
58
|
-
|
75
|
+
or
|
59
76
|
--with-lua50-lib=/path/to/liblua/lib
|
60
77
|
--with-lua50-include=/path/to/liblua/include
|
61
78
|
EOL
|
@@ -66,7 +83,16 @@ puts " CFLAGS = #{$CFLAGS}"
|
|
66
83
|
puts " LDFLAGS = #{$LDFLAGS}"
|
67
84
|
puts
|
68
85
|
|
69
|
-
|
86
|
+
#$CFLAGS = '-g -Wall ' + $CFLAGS
|
87
|
+
HAVE_LUA_GLOBALSINDEX = have_macro("LUA_GLOBALSINDEX", "lua.h")
|
88
|
+
RUBY_LUA_VERSION = open(File.join(File.dirname(__FILE__), "..", "VERSION")).read.chomp
|
89
|
+
open("config.h", 'w') { |f|
|
90
|
+
f.puts "#ifndef RUBY_LUA_CONFIG"
|
91
|
+
f.puts "#define RUBY_LUA_CONFIG"
|
92
|
+
f.puts "#define RUBY_LUA_VERSION \"#{RUBY_LUA_VERSION}\""
|
93
|
+
f.puts "#define HAVE_LUA_GLOBALSINDEX 1" if HAVE_LUA_GLOBALSINDEX
|
94
|
+
f.puts "#endif"
|
95
|
+
}
|
70
96
|
|
71
|
-
create_header()
|
97
|
+
#create_header()
|
72
98
|
create_makefile("language/lua")
|
data/ext/rlua.c
CHANGED
@@ -18,6 +18,12 @@
|
|
18
18
|
|
19
19
|
#include "rlua.h"
|
20
20
|
|
21
|
+
VALUE mLanguage;
|
22
|
+
VALUE cLua;
|
23
|
+
|
24
|
+
VALUE ruby_lua_stack_size(VALUE self);
|
25
|
+
VALUE ruby_lua_stack_dump(VALUE self);
|
26
|
+
|
21
27
|
#define _W_STACK(L) {\
|
22
28
|
int i;\
|
23
29
|
int iStackSize = lua_gettop( L );\
|
@@ -129,9 +135,21 @@ static void lua_SetVarToStack( lua_State *L, VALUE vVarValue ) {
|
|
129
135
|
* Desc: Positionne une valeur nomm�e Ruby dans l'index global Lua
|
130
136
|
*/
|
131
137
|
static void lua_SetNamedVarFromRuby( lua_State *L, VALUE vVarName, VALUE vVarValue ) {
|
138
|
+
#ifdef HAVE_LUA_GLOBALSINDEX
|
132
139
|
lua_pushlstring( L, RSTRING_PTR(vVarName), RSTRING_LEN(vVarName) );
|
133
|
-
|
134
|
-
|
140
|
+
#else
|
141
|
+
char * var_name = (char*)malloc(sizeof(char)*(RSTRING_LEN(vVarName)+1));
|
142
|
+
memset(var_name, 0, RSTRING_LEN(vVarName)+1);
|
143
|
+
memcpy(var_name, RSTRING_PTR(vVarName), RSTRING_LEN(vVarName));
|
144
|
+
lua_pushstring(L, var_name);
|
145
|
+
#endif
|
146
|
+
lua_SetVarToStack(L, vVarValue);
|
147
|
+
#ifdef HAVE_LUA_GLOBALSINDEX
|
148
|
+
lua_settable(L, LUA_GLOBALSINDEX);
|
149
|
+
#else
|
150
|
+
lua_setglobal(L, var_name);
|
151
|
+
free(var_name);
|
152
|
+
#endif
|
135
153
|
return;
|
136
154
|
}
|
137
155
|
|
@@ -140,12 +158,14 @@ static void lua_SetNamedVarFromRuby( lua_State *L, VALUE vVarName, VALUE vVarVal
|
|
140
158
|
*
|
141
159
|
* Desc: R�cup�re la valeur au sommet de la pile Lua
|
142
160
|
*/
|
143
|
-
static VALUE lua_GetVarFromStack(
|
161
|
+
static VALUE lua_GetVarFromStack(lua_State *L) {
|
144
162
|
int iStackSize = 0;
|
145
163
|
VALUE vTableKey = Qnil;
|
146
164
|
VALUE vTableValue = Qnil;
|
147
165
|
VALUE RCod = Qnil;
|
148
166
|
|
167
|
+
rb_require("language/lua/function");
|
168
|
+
|
149
169
|
switch(lua_type(L,-1)){
|
150
170
|
case LUA_TNONE:
|
151
171
|
break;
|
@@ -171,16 +191,60 @@ static VALUE lua_GetVarFromStack( lua_State *L ) {
|
|
171
191
|
vTableValue = lua_GetVarFromStack(L);
|
172
192
|
lua_pop(L,1);
|
173
193
|
vTableKey = lua_GetVarFromStack(L);
|
194
|
+
|
174
195
|
rb_hash_aset(RCod,vTableKey,vTableValue);
|
175
196
|
}
|
176
197
|
lua_settop(L,iStackSize);
|
177
198
|
break;
|
178
199
|
case LUA_TFUNCTION:
|
200
|
+
RCod = rb_class_new_instance(0, NULL, rb_const_get(cLua, rb_intern("Function")));
|
179
201
|
break;
|
180
202
|
}
|
181
203
|
return(RCod);
|
182
204
|
}
|
183
205
|
|
206
|
+
typedef struct populate {
|
207
|
+
VALUE lua;
|
208
|
+
char *parent;
|
209
|
+
} populate;
|
210
|
+
void lua_populate_fun(VALUE table, VALUE lua, char *parent);
|
211
|
+
|
212
|
+
int do_populate_lua(VALUE key, VALUE val, VALUE in) {
|
213
|
+
if(T_STRING == TYPE(key)) {
|
214
|
+
char *fn = concatenate(3, ((populate*)in)->parent, ".", StringValuePtr(key));
|
215
|
+
|
216
|
+
switch(TYPE(val)) {
|
217
|
+
case T_OBJECT:
|
218
|
+
if(0 == strcmp("Language::Lua::Function", rb_obj_classname(val))) {
|
219
|
+
rb_ivar_set(val, rb_intern("@lua"), ((populate*)in)->lua);
|
220
|
+
rb_ivar_set(val, rb_intern("@fname"), rb_str_new2(fn));
|
221
|
+
}
|
222
|
+
break;
|
223
|
+
case T_HASH:
|
224
|
+
lua_populate_fun(val, ((populate*)in)->lua, fn);
|
225
|
+
break;
|
226
|
+
default:
|
227
|
+
break;
|
228
|
+
}
|
229
|
+
|
230
|
+
free(fn);
|
231
|
+
}
|
232
|
+
return ST_CONTINUE;
|
233
|
+
}
|
234
|
+
|
235
|
+
void lua_populate_fun(VALUE table, VALUE lua, char *parent) {
|
236
|
+
populate *p = (populate*)malloc(sizeof(populate));
|
237
|
+
p->lua = lua;
|
238
|
+
p->parent = parent;
|
239
|
+
|
240
|
+
if(T_HASH != TYPE(table)) {
|
241
|
+
return;
|
242
|
+
}
|
243
|
+
rb_hash_foreach(table, do_populate_lua, (VALUE)p);
|
244
|
+
|
245
|
+
free(p);
|
246
|
+
}
|
247
|
+
|
184
248
|
static int lua_CallRubyFunction( lua_State *L ) {
|
185
249
|
int iNbArgs = lua_gettop(L);
|
186
250
|
VALUE self;
|
@@ -209,7 +273,7 @@ static int lua_CallRubyFunction( lua_State *L ) {
|
|
209
273
|
|
210
274
|
vFuncArgs = malloc(sizeof(VALUE) * iNbFuncArgs );
|
211
275
|
for( iCpt = 0; iCpt < iNbFuncArgs; iCpt++ ) {
|
212
|
-
vFuncArgs[iNbFuncArgs - iCpt - 1] = lua_GetVarFromStack(
|
276
|
+
vFuncArgs[iNbFuncArgs - iCpt - 1] = lua_GetVarFromStack(L);
|
213
277
|
lua_remove( L, -1 );
|
214
278
|
}
|
215
279
|
|
@@ -230,20 +294,47 @@ static int lua_CallRubyFunction( lua_State *L ) {
|
|
230
294
|
static VALUE ruby_CallLuaFunction( char *xFunctionName, int iNbArgs, VALUE *vArgs, VALUE self ) {
|
231
295
|
RbTlua *pRbTlua;
|
232
296
|
int iCpt;
|
297
|
+
int stack_size, final_stack_size, final_pop;
|
298
|
+
char *point_in_fun;
|
233
299
|
VALUE RCod = Qnil;
|
234
300
|
|
235
301
|
Data_Get_Struct( self, RbTlua, pRbTlua );
|
236
302
|
|
303
|
+
stack_size = lua_gettop(pRbTlua->L);
|
304
|
+
|
237
305
|
lua_getglobal( pRbTlua->L, xFunctionName ); /* get function */
|
306
|
+
if(!lua_isfunction(pRbTlua->L,lua_gettop(pRbTlua->L)) || NULL == strchr(xFunctionName, '.')){
|
307
|
+
lua_pop(pRbTlua->L, 1);
|
308
|
+
|
309
|
+
point_in_fun = strtok(xFunctionName, ".");
|
310
|
+
if(NULL == point_in_fun) {
|
311
|
+
rb_raise(rb_eSystemCallError, "error running lua function `%s': table does not exist", xFunctionName);
|
312
|
+
} else {
|
313
|
+
lua_getglobal(pRbTlua->L, point_in_fun);
|
314
|
+
}
|
315
|
+
point_in_fun = strtok(NULL, ".");
|
316
|
+
while(NULL != point_in_fun) {
|
317
|
+
lua_getfield(pRbTlua->L, -1, point_in_fun);
|
318
|
+
point_in_fun = strtok(NULL, ".");
|
319
|
+
}
|
320
|
+
} else {
|
321
|
+
rb_raise(rb_eSystemCallError, "error running lua function `%s': does not exist", xFunctionName);
|
322
|
+
}
|
238
323
|
|
239
324
|
for( iCpt = 0; iCpt < iNbArgs; iCpt++ ) {
|
240
325
|
lua_SetVarToStack( pRbTlua->L, vArgs[iCpt] );
|
241
326
|
}
|
242
327
|
|
243
|
-
if( lua_pcall( pRbTlua->L, iNbArgs, 1, 0 ) != 0 ) /* do the call */
|
328
|
+
if( lua_pcall( pRbTlua->L, iNbArgs, 1, 0 ) != 0 ) /* do the call */ {
|
244
329
|
rb_raise( rb_eSystemCallError, "error running lua function `%s': %s", xFunctionName, lua_tostring(pRbTlua->L, -1) );
|
330
|
+
}
|
245
331
|
|
246
|
-
RCod = lua_GetVarFromStack(
|
332
|
+
RCod = lua_GetVarFromStack(pRbTlua->L);
|
333
|
+
|
334
|
+
final_stack_size = lua_gettop(pRbTlua->L);
|
335
|
+
final_pop = final_stack_size - stack_size;
|
336
|
+
lua_pop(pRbTlua->L, final_pop);
|
337
|
+
lua_SetVarToStack(pRbTlua->L, RCod);
|
247
338
|
|
248
339
|
return( RCod );
|
249
340
|
}
|
@@ -284,9 +375,8 @@ VALUE ruby_lua_new( VALUE class ) {
|
|
284
375
|
rb_raise( rb_eNoMemError, "No memory left for Lua struct" );
|
285
376
|
|
286
377
|
pRbTlua->L = lua_newstate(l_alloc, pRbTlua->ud);
|
287
|
-
luaL_openlibs(pRbTlua->L);
|
288
|
-
|
289
378
|
lua_register( pRbTlua->L, "ruby", lua_CallRubyFunction );
|
379
|
+
luaL_openlibs(pRbTlua->L);
|
290
380
|
|
291
381
|
self = Data_Wrap_Struct( class, ruby_lua_mark, ruby_lua_free, pRbTlua );
|
292
382
|
|
@@ -386,7 +476,8 @@ VALUE ruby_lua_var( int iNbArgs, VALUE *vArgs, VALUE self ) {
|
|
386
476
|
if( iNbArgs == 2 ) {
|
387
477
|
/** Act: Recup�re la valeur */
|
388
478
|
lua_getglobal( pRbTlua->L, StringValuePtr(vArgs[1]) );
|
389
|
-
RCod = lua_GetVarFromStack(
|
479
|
+
RCod = lua_GetVarFromStack(pRbTlua->L);
|
480
|
+
lua_populate_fun(RCod, self, StringValuePtr(vArgs[1]));
|
390
481
|
} else if( iNbArgs == 3 ) {
|
391
482
|
/** Positionne la valeur */
|
392
483
|
lua_SetNamedVarFromRuby( pRbTlua->L, vArgs[1], vArgs[2] );
|
@@ -399,7 +490,8 @@ VALUE ruby_lua_var( int iNbArgs, VALUE *vArgs, VALUE self ) {
|
|
399
490
|
if( iNbArgs == 2 ) {
|
400
491
|
/** Act: Recup�re la valeur */
|
401
492
|
lua_getglobal( pRbTlua->L, StringValuePtr(vArgs[1]) );
|
402
|
-
RCod = lua_GetVarFromStack(
|
493
|
+
RCod = lua_GetVarFromStack(pRbTlua->L);
|
494
|
+
lua_populate_fun(RCod, self, StringValuePtr(vArgs[1]));
|
403
495
|
lua_pop( pRbTlua->L, 1 );
|
404
496
|
} else if( iNbArgs == 3 ) {
|
405
497
|
/** Positionne la valeur */
|
@@ -413,7 +505,8 @@ VALUE ruby_lua_var( int iNbArgs, VALUE *vArgs, VALUE self ) {
|
|
413
505
|
if( iNbArgs == 1 ) {
|
414
506
|
/** Act: Recup�re la valeur */
|
415
507
|
lua_getglobal( pRbTlua->L, StringValuePtr(vArgs[0]) );
|
416
|
-
RCod = lua_GetVarFromStack(
|
508
|
+
RCod = lua_GetVarFromStack(pRbTlua->L);
|
509
|
+
lua_populate_fun(RCod, self, StringValuePtr(vArgs[0]));
|
417
510
|
lua_pop( pRbTlua->L, 1 );
|
418
511
|
} else if( iNbArgs == 2 ) {
|
419
512
|
/** Positionne la valeur */
|
@@ -499,9 +592,6 @@ VALUE ruby_lua_stack_dump( VALUE self ) {
|
|
499
592
|
|
500
593
|
/** ------------------------------------------------------------------------ */
|
501
594
|
|
502
|
-
VALUE mLanguage;
|
503
|
-
VALUE cLua;
|
504
|
-
|
505
595
|
void Init_lua( void ) {
|
506
596
|
mLanguage = rb_define_module( "Language" );
|
507
597
|
cLua = rb_define_class_under( mLanguage, "Lua", rb_cObject );
|
@@ -520,3 +610,4 @@ void Init_lua( void ) {
|
|
520
610
|
rb_define_method( cLua, "stack_size", ruby_lua_stack_size, 0 );
|
521
611
|
rb_define_method( cLua, "stack_dump", ruby_lua_stack_dump, 0 );
|
522
612
|
}
|
613
|
+
|
data/ext/rlua.h
CHANGED
@@ -26,6 +26,7 @@
|
|
26
26
|
#include <rubyio.h>
|
27
27
|
#else
|
28
28
|
#include <ruby/io.h>
|
29
|
+
#include <ruby/st.h>
|
29
30
|
#endif
|
30
31
|
|
31
32
|
#include <stdlib.h>
|
@@ -37,8 +38,8 @@
|
|
37
38
|
#include <lauxlib.h>
|
38
39
|
#include <lualib.h>
|
39
40
|
|
40
|
-
#
|
41
|
-
#
|
41
|
+
#include "config.h"
|
42
|
+
#include "util.h"
|
42
43
|
|
43
44
|
typedef struct RbTlua {
|
44
45
|
lua_State *L;
|
data/ext/util.c
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#include <stdio.h>
|
2
|
+
#include <stdarg.h>
|
3
|
+
#include <string.h>
|
4
|
+
#include <stdlib.h>
|
5
|
+
|
6
|
+
char* concatenate(int n, ...) {
|
7
|
+
int i;
|
8
|
+
const char* v;
|
9
|
+
va_list vl;
|
10
|
+
va_start(vl, n);
|
11
|
+
char *result = NULL;
|
12
|
+
for(i=0; i<n; i++) {
|
13
|
+
v = va_arg(vl, const char*);
|
14
|
+
|
15
|
+
if(result) {
|
16
|
+
char *tmp = strdup(result);
|
17
|
+
free(result);
|
18
|
+
result = (char*)malloc(sizeof(char)*(strlen(tmp)+strlen(v)+1));
|
19
|
+
memset(result, 0, strlen(tmp)+strlen(v)+1);
|
20
|
+
sprintf(result, "%s%s", tmp, v);
|
21
|
+
free(tmp);
|
22
|
+
} else {
|
23
|
+
result = (char*)malloc(sizeof(char)*(strlen(v)+1));
|
24
|
+
memset(result, 0, strlen(v)+1);
|
25
|
+
memcpy(result, v, strlen(v));
|
26
|
+
}
|
27
|
+
}
|
28
|
+
return result;
|
29
|
+
}
|
30
|
+
|
data/ext/util.h
ADDED
data/lib/ruby-lua.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'language/lua'
|
data/ruby-lua.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = "ruby-lua"
|
5
|
+
s.description = "Call Lua from Ruby (and Ruby from Lua in Ruby)"
|
6
|
+
s.summary = "Call Lua from Ruby (and Ruby from Lua in Ruby)"
|
7
|
+
|
8
|
+
s.version = open(File.join(File.dirname(__FILE__), "VERSION")).read
|
9
|
+
s.platform = Gem::Platform::RUBY
|
10
|
+
|
11
|
+
s.authors = ["Gregoire Lejeune"]
|
12
|
+
s.email = "gregoire.lejeune@free.fr"
|
13
|
+
s.homepage = "http://github.com/glejeune/ruby-lua"
|
14
|
+
s.license = "MIT"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- test/*`.split("\n")
|
18
|
+
s.extra_rdoc_files = ["LICENSE.txt","README.rdoc"]
|
19
|
+
s.extensions = ["ext/extconf.rb"]
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_development_dependency("shoulda")
|
23
|
+
s.add_development_dependency("bundler")
|
24
|
+
s.add_development_dependency("rdoc")
|
25
|
+
s.add_development_dependency("rake")
|
26
|
+
end
|
27
|
+
|
data/test/helper.rb
CHANGED
@@ -1,18 +1,17 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
2
|
+
require 'bundler/setup'
|
10
3
|
require 'test/unit'
|
11
4
|
require 'shoulda'
|
5
|
+
require 'pathname'
|
12
6
|
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
cur = Pathname.new(File.expand_path("..", __FILE__))
|
8
|
+
lib = cur.join('..', 'lib')
|
9
|
+
ext = cur.join('..', 'ext')
|
16
10
|
|
17
|
-
|
11
|
+
unless ext.join("lua.so").exist? or ext.join("lua.bundle").exist? or ext.join("lua.dll").exist?
|
12
|
+
abort " ! Unable to run tests. Please run `rake build` first"
|
18
13
|
end
|
14
|
+
|
15
|
+
$LOAD_PATH.unshift(lib.to_s, ext.to_s, cur.to_s)
|
16
|
+
require 'lua'
|
17
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestCallLuaFromRuby < Test::Unit::TestCase
|
4
|
+
context "a lua jit" do
|
5
|
+
setup do
|
6
|
+
@lua = Language::Lua.new()
|
7
|
+
@lua.eval <<-LUA
|
8
|
+
function one()
|
9
|
+
return 1
|
10
|
+
end
|
11
|
+
|
12
|
+
function two()
|
13
|
+
return 2, 3
|
14
|
+
end
|
15
|
+
|
16
|
+
function data(x)
|
17
|
+
return x
|
18
|
+
end
|
19
|
+
LUA
|
20
|
+
end
|
21
|
+
|
22
|
+
should "return 1.0" do
|
23
|
+
assert_equal 1.0, @lua.call(true, "one")
|
24
|
+
end
|
25
|
+
|
26
|
+
should "return 2.0" do
|
27
|
+
assert_equal 2.0, @lua.call(true, "two")
|
28
|
+
end
|
29
|
+
|
30
|
+
should "return the given value" do
|
31
|
+
assert_equal "hello", @lua.call(true, "data", "hello")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestCallLuaFromRuby < Test::Unit::TestCase
|
4
|
+
context "a lua jit" do
|
5
|
+
setup do
|
6
|
+
@lua = Language::Lua.new()
|
7
|
+
end
|
8
|
+
|
9
|
+
should "return 5.0" do
|
10
|
+
assert_equal 5.0, @lua.call("string.len", "hello")
|
11
|
+
end
|
12
|
+
|
13
|
+
should "return 65.0" do
|
14
|
+
assert_equal 65.0, @lua.call("string.byte", "ABCDE")
|
15
|
+
end
|
16
|
+
|
17
|
+
should "return 12.0" do
|
18
|
+
assert_equal 12.0, @lua.call("string.find", "Hello from Lua", "Lua")
|
19
|
+
end
|
20
|
+
|
21
|
+
should "return 8.0" do
|
22
|
+
assert_equal 8.0, @lua.var('string')["len"].call("ruby-lua")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
def my_ruby_function(str, num)
|
4
|
+
"str = #{str}, num = #{num}"
|
5
|
+
end
|
6
|
+
|
7
|
+
class TestRubyFromLua < Test::Unit::TestCase
|
8
|
+
context "a lua jit" do
|
9
|
+
setup do
|
10
|
+
@lua = Language::Lua.new()
|
11
|
+
@lua.eval <<-LUA
|
12
|
+
function call_ruby()
|
13
|
+
return ruby("my_ruby_function", "string", 3)
|
14
|
+
end
|
15
|
+
LUA
|
16
|
+
end
|
17
|
+
|
18
|
+
should "return the result of my_ruby_function" do
|
19
|
+
assert_equal "str = string, num = 3.0", @lua.call(true, "call_ruby")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/test/test_vars.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestVars < Test::Unit::TestCase
|
4
|
+
context "a lua jit" do
|
5
|
+
setup do
|
6
|
+
@lua = Language::Lua.new()
|
7
|
+
end
|
8
|
+
|
9
|
+
should "create a string variable" do
|
10
|
+
@lua.var("str", "This is a string")
|
11
|
+
assert_equal "This is a string", @lua.var("str")
|
12
|
+
end
|
13
|
+
|
14
|
+
should "create a number variable" do
|
15
|
+
@lua.var("num", 123)
|
16
|
+
assert_equal 123.0, @lua.var("num")
|
17
|
+
end
|
18
|
+
|
19
|
+
should "create a boolean variable" do
|
20
|
+
@lua.var("yes", true)
|
21
|
+
@lua.var("no", false)
|
22
|
+
|
23
|
+
assert_equal true, @lua.var("yes")
|
24
|
+
assert_equal false, @lua.var("no")
|
25
|
+
end
|
26
|
+
|
27
|
+
should "create a nil variable" do
|
28
|
+
@lua.var("null", NIL)
|
29
|
+
assert_equal NIL, @lua.var("null")
|
30
|
+
end
|
31
|
+
|
32
|
+
should "create a table" do
|
33
|
+
@lua.var("table", ["string", 123, true, NIL])
|
34
|
+
table = @lua.var("table")
|
35
|
+
assert_equal 4, table.size()
|
36
|
+
assert_equal "string", table[1.0]
|
37
|
+
assert_equal 123.0, table[2.0]
|
38
|
+
assert_equal true, table[3.0]
|
39
|
+
assert_equal NIL, table[4.0]
|
40
|
+
end
|
41
|
+
|
42
|
+
should "create a hash" do
|
43
|
+
@lua.var("hash", {"string" => 123})
|
44
|
+
hash = @lua.var("hash")
|
45
|
+
assert_equal 123.0, hash["string"]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
metadata
CHANGED
@@ -1,106 +1,81 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-lua
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 0
|
10
|
-
version: 0.3.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Gregoire Lejeune
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
22
|
-
none: false
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
hash: 3
|
27
|
-
segments:
|
28
|
-
- 0
|
29
|
-
version: "0"
|
11
|
+
date: 2013-04-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
30
14
|
name: shoulda
|
31
|
-
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
32
20
|
type: :development
|
33
|
-
requirement: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
36
|
-
none: false
|
37
|
-
requirements:
|
38
|
-
- - ~>
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
hash: 23
|
41
|
-
segments:
|
42
|
-
- 1
|
43
|
-
- 0
|
44
|
-
- 0
|
45
|
-
version: 1.0.0
|
46
|
-
name: bundler
|
47
21
|
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
48
34
|
type: :development
|
49
|
-
requirement: *id002
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
52
|
-
none: false
|
53
|
-
requirements:
|
54
|
-
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
hash: 1
|
57
|
-
segments:
|
58
|
-
- 1
|
59
|
-
- 5
|
60
|
-
- 1
|
61
|
-
version: 1.5.1
|
62
|
-
name: jeweler
|
63
35
|
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rdoc
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
64
48
|
type: :development
|
65
|
-
requirement: *id003
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
|
-
requirements:
|
70
|
-
- - ">="
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
hash: 3
|
73
|
-
segments:
|
74
|
-
- 0
|
75
|
-
version: "0"
|
76
|
-
name: rcov
|
77
49
|
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
78
62
|
type: :development
|
79
|
-
requirement: *id004
|
80
|
-
- !ruby/object:Gem::Dependency
|
81
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
|
-
requirements:
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
hash: 3
|
87
|
-
segments:
|
88
|
-
- 0
|
89
|
-
version: "0"
|
90
|
-
name: rdoc
|
91
63
|
prerelease: false
|
92
|
-
|
93
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
94
69
|
description: Call Lua from Ruby (and Ruby from Lua in Ruby)
|
95
70
|
email: gregoire.lejeune@free.fr
|
96
71
|
executables: []
|
97
|
-
|
98
|
-
extensions:
|
72
|
+
extensions:
|
99
73
|
- ext/extconf.rb
|
100
|
-
extra_rdoc_files:
|
74
|
+
extra_rdoc_files:
|
101
75
|
- LICENSE.txt
|
102
76
|
- README.rdoc
|
103
|
-
files:
|
77
|
+
files:
|
78
|
+
- .gitignore
|
104
79
|
- Gemfile
|
105
80
|
- Gemfile.lock
|
106
81
|
- LICENSE.txt
|
@@ -117,45 +92,43 @@ files:
|
|
117
92
|
- ext/extconf.rb
|
118
93
|
- ext/rlua.c
|
119
94
|
- ext/rlua.h
|
95
|
+
- ext/util.c
|
96
|
+
- ext/util.h
|
97
|
+
- lib/language/lua/function.rb
|
98
|
+
- lib/ruby-lua.rb
|
99
|
+
- ruby-lua.gemspec
|
120
100
|
- test/helper.rb
|
121
|
-
- test/
|
101
|
+
- test/test_lua_from_ruby.rb
|
102
|
+
- test/test_lua_function.rb
|
103
|
+
- test/test_ruby_from_lua.rb
|
104
|
+
- test/test_vars.rb
|
122
105
|
homepage: http://github.com/glejeune/ruby-lua
|
123
|
-
licenses:
|
106
|
+
licenses:
|
124
107
|
- MIT
|
108
|
+
metadata: {}
|
125
109
|
post_install_message:
|
126
110
|
rdoc_options: []
|
127
|
-
|
128
|
-
require_paths:
|
111
|
+
require_paths:
|
129
112
|
- lib
|
130
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
none: false
|
141
|
-
requirements:
|
142
|
-
- - ">="
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
hash: 3
|
145
|
-
segments:
|
146
|
-
- 0
|
147
|
-
version: "0"
|
113
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
148
123
|
requirements: []
|
149
|
-
|
150
124
|
rubyforge_project:
|
151
|
-
rubygems_version:
|
125
|
+
rubygems_version: 2.0.3
|
152
126
|
signing_key:
|
153
|
-
specification_version:
|
127
|
+
specification_version: 4
|
154
128
|
summary: Call Lua from Ruby (and Ruby from Lua in Ruby)
|
155
|
-
test_files:
|
156
|
-
- examples/func.rb
|
157
|
-
- examples/rli.rb
|
158
|
-
- examples/test.rb
|
159
|
-
- examples/tt.rb
|
129
|
+
test_files:
|
160
130
|
- test/helper.rb
|
161
|
-
- test/
|
131
|
+
- test/test_lua_from_ruby.rb
|
132
|
+
- test/test_lua_function.rb
|
133
|
+
- test/test_ruby_from_lua.rb
|
134
|
+
- test/test_vars.rb
|