rua 0.2.3-mswin32 → 0.2.4-mswin32
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.txt +4 -0
- data/ext/rua.c +30 -5
- data/lib/i386-mswin32/rua.so +0 -0
- metadata +2 -2
data/README.txt
CHANGED
@@ -32,6 +32,7 @@ http://rubyforge.org/frs/?group_id=4845
|
|
32
32
|
|
33
33
|
rua.str = 'xxx'
|
34
34
|
rua.num = 100
|
35
|
+
rua.range = 1..5
|
35
36
|
rua.proc = lambda do
|
36
37
|
puts 'proc called.'
|
37
38
|
end
|
@@ -45,6 +46,9 @@ http://rubyforge.org/frs/?group_id=4845
|
|
45
46
|
print('hello Rua!')
|
46
47
|
print(str)
|
47
48
|
print(num)
|
49
|
+
range.each(function(i)
|
50
|
+
print(i)
|
51
|
+
end)
|
48
52
|
proc()
|
49
53
|
err()
|
50
54
|
print(Time.new().to_s())
|
data/ext/rua.c
CHANGED
@@ -16,7 +16,7 @@ __declspec(dllexport) void Init_rua(void);
|
|
16
16
|
|
17
17
|
#include "rua.h"
|
18
18
|
|
19
|
-
#define VERSION "0.2.
|
19
|
+
#define VERSION "0.2.4"
|
20
20
|
#define REF_RBOBJ "self"
|
21
21
|
|
22
22
|
static const char *insecure_methods[] = {
|
@@ -686,7 +686,7 @@ static void rua_newtable_from_obj(lua_State *L, VALUE obj, struct rua_state *R)
|
|
686
686
|
|
687
687
|
static int rua_proc_call(lua_State *L) {
|
688
688
|
struct rua_state *R;
|
689
|
-
VALUE proc, args, retval, errargs;
|
689
|
+
VALUE proc, args, last, retval, errargs;
|
690
690
|
int i, n, status;
|
691
691
|
|
692
692
|
proc = (VALUE) lua_touserdata(L, lua_upvalueindex(1));
|
@@ -698,8 +698,14 @@ static int rua_proc_call(lua_State *L) {
|
|
698
698
|
rb_ary_push(args, rua_torbval(L, i + 1, R));
|
699
699
|
}
|
700
700
|
|
701
|
+
last = (i > 0) ? rb_ary_entry(args, -1) : Qnil;
|
701
702
|
rb_ary_push(args, proc);
|
702
|
-
|
703
|
+
|
704
|
+
if (rb_obj_is_kind_of(last, RuaFunc)) {
|
705
|
+
retval = rb_protect(_rua_proc_call_with_block, args, &status);
|
706
|
+
} else {
|
707
|
+
retval = rb_protect(_rua_proc_call, args, &status);
|
708
|
+
}
|
703
709
|
|
704
710
|
if (status != 0) {
|
705
711
|
if (rua_obj_is_executable(R->error_handler)) {
|
@@ -721,9 +727,28 @@ static int rua_proc_call(lua_State *L) {
|
|
721
727
|
}
|
722
728
|
|
723
729
|
static VALUE _rua_proc_call(VALUE args) {
|
724
|
-
VALUE proc
|
730
|
+
VALUE proc;
|
731
|
+
|
732
|
+
proc = rb_ary_pop(args);
|
733
|
+
return rb_funcall2(proc, rb_intern("call"), RARRAY(args)->len, RARRAY(args)->ptr);
|
734
|
+
}
|
735
|
+
|
725
736
|
|
726
|
-
|
737
|
+
static VALUE _rua_proc_call_with_block(VALUE args) {
|
738
|
+
VALUE proc, block;
|
739
|
+
|
740
|
+
proc = rb_ary_pop(args);
|
741
|
+
block = rb_ary_pop(args);
|
742
|
+
rb_ary_push(args, proc);
|
743
|
+
return rb_iterate(_rua_proc_call, args, _rua_proc_call_as_block, block);
|
744
|
+
}
|
745
|
+
|
746
|
+
static VALUE _rua_proc_call_as_block(VALUE block_arg, VALUE block, VALUE self) {
|
747
|
+
if (TYPE(block_arg) == T_ARRAY) {
|
748
|
+
return rb_apply(block, rb_intern("call"), block_arg);
|
749
|
+
} else {
|
750
|
+
return rb_funcall(block, rb_intern("call"), 1, block_arg);
|
751
|
+
}
|
727
752
|
}
|
728
753
|
|
729
754
|
static VALUE rua_toruaobj(VALUE klass, lua_State *L, int idx, struct rua_state *R) {
|
data/lib/i386-mswin32/rua.so
CHANGED
Binary file
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rua
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.2.
|
7
|
-
date: 2007-11-
|
6
|
+
version: 0.2.4
|
7
|
+
date: 2007-11-22 00:00:00 +09:00
|
8
8
|
summary: Rua is a library for using Lua under Ruby.
|
9
9
|
require_paths:
|
10
10
|
- lib/i386-mswin32
|