rua 0.4.7-mswin32 → 0.4.8-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 +2 -0
- data/ext/rua.c +39 -6
- data/lib/i386-mswin32/rua.so +0 -0
- metadata +3 -3
data/README.txt
CHANGED
@@ -23,6 +23,7 @@ http://rubyforge.org/frs/?group_id=4845
|
|
23
23
|
require 'rua'
|
24
24
|
|
25
25
|
class MyClass
|
26
|
+
CONST_FOO = 100
|
26
27
|
def val=(v); @val = v; end
|
27
28
|
def val; @val; end
|
28
29
|
def [](k); "#{k}->#{@val}"; end
|
@@ -68,6 +69,7 @@ http://rubyforge.org/frs/?group_id=4845
|
|
68
69
|
print(my_obj['foo'])
|
69
70
|
my_obj['bar'] = 'zoo'
|
70
71
|
print(my_obj.val())
|
72
|
+
print(MyClass.CONST_FOO)
|
71
73
|
|
72
74
|
f = function()
|
73
75
|
print('f() called.')
|
data/ext/rua.c
CHANGED
@@ -17,7 +17,13 @@ __declspec(dllexport) void Init_rua(void);
|
|
17
17
|
#include "iconv.h"
|
18
18
|
|
19
19
|
#include "ruby.h"
|
20
|
+
|
21
|
+
#ifndef RUBY_VM
|
20
22
|
#include "rubysig.h"
|
23
|
+
#else
|
24
|
+
#define TRAP_BEG
|
25
|
+
#define TRAP_END
|
26
|
+
#endif
|
21
27
|
|
22
28
|
#include "rua.h"
|
23
29
|
|
@@ -37,7 +43,11 @@ __declspec(dllexport) void Init_rua(void);
|
|
37
43
|
#define RARRAY_LEN(s) (RARRAY(s)->len)
|
38
44
|
#endif
|
39
45
|
|
40
|
-
#
|
46
|
+
#ifndef RUBY_VM
|
47
|
+
#define rb_errinfo() ruby_errinfo
|
48
|
+
#endif
|
49
|
+
|
50
|
+
#define VERSION "0.4.8"
|
41
51
|
#define REF_RBOBJ "self"
|
42
52
|
|
43
53
|
#define ICONV_JIS "ISO-2022-JP"
|
@@ -104,6 +114,7 @@ static const int insecure_method_num = sizeof(insecure_methods) / sizeof(char*);
|
|
104
114
|
static VALUE Rua, RuaFunc, RuaThread, RuaError, RuaDebug;
|
105
115
|
static VALUE s_all, s_base, s_package, s_string, s_table, s_math, s_io, s_debug;
|
106
116
|
static VALUE m_method_unbound, m_methods_unbound;
|
117
|
+
static VALUE m_constants_unbound, m_const_get_unbound;
|
107
118
|
|
108
119
|
void Init_rua() {
|
109
120
|
Rua = rb_define_class("Rua", rb_cObject);
|
@@ -142,6 +153,11 @@ void Init_rua() {
|
|
142
153
|
rb_define_class_variable(Rua, "@@m_method_unbound", m_method_unbound);
|
143
154
|
rb_define_class_variable(Rua, "@@m_methods_unbound", m_methods_unbound);
|
144
155
|
|
156
|
+
m_constants_unbound = rb_funcall(rb_cModule, rb_intern("instance_method"), 1, ID2SYM(rb_intern("constants")));
|
157
|
+
m_const_get_unbound = rb_funcall(rb_cModule, rb_intern("instance_method"), 1, ID2SYM(rb_intern("const_get")));
|
158
|
+
rb_define_class_variable(Rua, "@@m_constants_unbound", m_constants_unbound);
|
159
|
+
rb_define_class_variable(Rua, "@@m_const_get_unbound", m_const_get_unbound);
|
160
|
+
|
145
161
|
rb_define_alloc_func(RuaFunc, rua_ref_alloc);
|
146
162
|
rb_define_private_method(RuaFunc, "initialize", rua_func_initialize, 0);
|
147
163
|
rb_define_method(RuaFunc, "call", rua_func_call, -1);
|
@@ -1157,7 +1173,7 @@ static void rua_newtable_from_obj(lua_State *L, VALUE obj, struct rua_state *R)
|
|
1157
1173
|
method = rb_funcall(m_method_bound, rb_intern("call"), 1, name);
|
1158
1174
|
rb_hash_aset(R->refs, method, Qtrue);
|
1159
1175
|
|
1160
|
-
if (R->secure && rua_name_is_insecure_method(
|
1176
|
+
if (R->secure && rua_name_is_insecure_method(StringValuePtr(name))) {
|
1161
1177
|
continue;
|
1162
1178
|
}
|
1163
1179
|
|
@@ -1166,6 +1182,23 @@ static void rua_newtable_from_obj(lua_State *L, VALUE obj, struct rua_state *R)
|
|
1166
1182
|
lua_rawset(L, tblidx);
|
1167
1183
|
}
|
1168
1184
|
|
1185
|
+
if (rb_obj_is_kind_of(obj, rb_cModule)) {
|
1186
|
+
VALUE cnsts, cname, cnst;
|
1187
|
+
VALUE m_const_get_bound, m_constants_bound;
|
1188
|
+
m_const_get_bound = rb_funcall(m_const_get_unbound, rb_intern("bind"), 1, obj);
|
1189
|
+
m_constants_bound = rb_funcall(m_constants_unbound, rb_intern("bind"), 1, obj);
|
1190
|
+
cnsts = rb_check_convert_type(m_constants_bound, T_ARRAY, "Array", "call");
|
1191
|
+
|
1192
|
+
for (i = 0; i < RARRAY_LEN(cnsts); i++) {
|
1193
|
+
cname = rb_ary_entry(cnsts, i);
|
1194
|
+
cnst = rb_funcall(m_const_get_bound, rb_intern("call"), 1, cname);
|
1195
|
+
rb_hash_aset(R->refs, cnst, Qtrue);
|
1196
|
+
rua_pushrbval(L, cname, R);
|
1197
|
+
rua_pushrbval(L, cnst, R);
|
1198
|
+
lua_rawset(L, tblidx);
|
1199
|
+
}
|
1200
|
+
}
|
1201
|
+
|
1169
1202
|
lua_pushvalue(L, -1);
|
1170
1203
|
rua_setmeta(L, prxidx, "__index", rua_getobject_event, 1);
|
1171
1204
|
rua_setmeta(L, prxidx, "__newindex", rua_setobject_event, 1);
|
@@ -1261,12 +1294,12 @@ static int rua_proc_call(lua_State *L) {
|
|
1261
1294
|
if (status != 0) {
|
1262
1295
|
if (R->wrap_error) {
|
1263
1296
|
if (lua_getstack(L, 1, &ar) && lua_getinfo(L, "nSlu", &ar)) {
|
1264
|
-
error = rua_toruaerror(
|
1297
|
+
error = rua_toruaerror(rb_errinfo(), rua_toruadebug(&ar));
|
1265
1298
|
} else {
|
1266
|
-
error = rua_toruaerror(
|
1299
|
+
error = rua_toruaerror(rb_errinfo(), Qnil);
|
1267
1300
|
}
|
1268
1301
|
} else {
|
1269
|
-
error =
|
1302
|
+
error = rb_errinfo();
|
1270
1303
|
}
|
1271
1304
|
|
1272
1305
|
if (rua_obj_is_executable(R->error_handler)) {
|
@@ -1276,7 +1309,7 @@ static int rua_proc_call(lua_State *L) {
|
|
1276
1309
|
retval = rb_protect(_rua_proc_call, errargs, &status);
|
1277
1310
|
|
1278
1311
|
if (status != 0) {
|
1279
|
-
rb_warn("%s\n", rua_to_sptr(
|
1312
|
+
rb_warn("%s\n", rua_to_sptr(rb_errinfo()));
|
1280
1313
|
}
|
1281
1314
|
} else {
|
1282
1315
|
retval = Qnil;
|
data/lib/i386-mswin32/rua.so
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rua
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.8
|
5
5
|
platform: mswin32
|
6
6
|
authors:
|
7
7
|
- winebarrel
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-06-26 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -49,7 +49,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
49
49
|
requirements: []
|
50
50
|
|
51
51
|
rubyforge_project: rua
|
52
|
-
rubygems_version: 1.
|
52
|
+
rubygems_version: 1.3.1
|
53
53
|
signing_key:
|
54
54
|
specification_version: 2
|
55
55
|
summary: Rua is a library for using Lua under Ruby.
|