rufus-lua 1.1.0 → 1.1.1
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/CHANGELOG.txt +17 -0
- data/CREDITS.txt +7 -2
- data/LICENSE.txt +1 -1
- data/README.md +263 -0
- data/Rakefile +82 -0
- data/lib/rufus/lua.rb +4 -1
- data/lib/rufus/lua/error.rb +86 -0
- data/lib/rufus/lua/lib.rb +34 -14
- data/lib/rufus/lua/objects.rb +11 -12
- data/lib/rufus/lua/state.rb +74 -55
- data/lib/rufus/lua/utils.rb +3 -3
- data/lib/rufus/lua/version.rb +32 -0
- data/rufus-lua.gemspec +36 -0
- data/spec/coroutines_spec.rb +90 -0
- data/spec/eval_spec.rb +125 -0
- data/spec/functions_spec.rb +119 -0
- data/spec/gc_spec.rb +41 -0
- data/spec/lib_spec.rb +32 -0
- data/spec/rfunctions_spec.rb +282 -0
- data/spec/spec_base.rb +10 -0
- data/spec/state_spec.rb +106 -0
- data/spec/string_spec.rb +46 -0
- data/spec/tables_spec.rb +165 -0
- data/spec/utils_spec.rb +36 -0
- data/test/bm0.rb +41 -0
- data/test/bm_fiber.rb +78 -0
- data/test/bm_gc_stop.rb +43 -0
- data/test/gc0.rb +19 -0
- data/test/t.rb +19 -0
- metadata +105 -56
- data/README.rdoc +0 -210
data/README.rdoc
DELETED
@@ -1,210 +0,0 @@
|
|
1
|
-
|
2
|
-
= rufus-lua
|
3
|
-
|
4
|
-
Lua embedded in Ruby, via Ruby FFI
|
5
|
-
|
6
|
-
|
7
|
-
== Lua
|
8
|
-
|
9
|
-
http://www.lua.org/about.html says :
|
10
|
-
|
11
|
-
"""
|
12
|
-
Lua is a powerful, fast, lightweight, embeddable scripting language.
|
13
|
-
|
14
|
-
Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.
|
15
|
-
"""
|
16
|
-
|
17
|
-
http://www.lua.org/
|
18
|
-
|
19
|
-
|
20
|
-
== other Ruby and Lua bridges / connectors
|
21
|
-
|
22
|
-
|
23
|
-
http://rubyluabridge.rubyforge.org/
|
24
|
-
http://raa.ruby-lang.org/project/ruby-lua
|
25
|
-
|
26
|
-
|
27
|
-
== using rufus-lua
|
28
|
-
|
29
|
-
If you don't have liblua.dylib on your system, scroll until "compiling liblua.dylib" to learn how to get it.
|
30
|
-
|
31
|
-
sudo gem install rufus-lua
|
32
|
-
|
33
|
-
then
|
34
|
-
|
35
|
-
require 'rubygems'
|
36
|
-
require 'rufus/lua'
|
37
|
-
|
38
|
-
s = Rufus::Lua::State.new
|
39
|
-
|
40
|
-
puts s.eval("return table.concat({ 'hello', 'from', 'Lua' }, ' ')")
|
41
|
-
#
|
42
|
-
# => "Hello from Lua"
|
43
|
-
|
44
|
-
s.close
|
45
|
-
|
46
|
-
|
47
|
-
=== binding Ruby code as Lua functions
|
48
|
-
|
49
|
-
require 'rubygems'
|
50
|
-
require 'rufus/lua'
|
51
|
-
|
52
|
-
s = Rufus::Lua::State.new
|
53
|
-
|
54
|
-
s.function 'key_up' do |table|
|
55
|
-
table.inject({}) do |h, (k, v)|
|
56
|
-
h[k.to_s.upcase] = v
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
p s.eval(%{
|
61
|
-
local table = { CoW = 2, pigs = 3, DUCKS = 'none' }
|
62
|
-
return key_up(table) -- calling Ruby from Lua...
|
63
|
-
}).to_h
|
64
|
-
# => { 'COW' => 2.0, 'DUCKS => 'none', 'PIGS' => 3.0 }
|
65
|
-
|
66
|
-
s.close
|
67
|
-
|
68
|
-
|
69
|
-
It's OK to bind a function inside of a table (library) :
|
70
|
-
|
71
|
-
require 'rubygems'
|
72
|
-
require 'rufus/lua'
|
73
|
-
|
74
|
-
s = Rufus::Lua::State.new
|
75
|
-
|
76
|
-
s.eval("rubies = {}")
|
77
|
-
s.function 'add' do |x, y|
|
78
|
-
x + y
|
79
|
-
end
|
80
|
-
|
81
|
-
s.eval("rubies.add(1, 2)")
|
82
|
-
# => 3.0
|
83
|
-
|
84
|
-
s.close
|
85
|
-
|
86
|
-
|
87
|
-
You can omit the table definition (only 1 level allowed here though) :
|
88
|
-
|
89
|
-
require 'rubygems'
|
90
|
-
require 'rufus/lua'
|
91
|
-
|
92
|
-
s = Rufus::Lua::State.new
|
93
|
-
|
94
|
-
s.function 'rubies.add' do |x, y|
|
95
|
-
x + y
|
96
|
-
end
|
97
|
-
|
98
|
-
s.eval("rubies.add(1, 2)")
|
99
|
-
# => 3.0
|
100
|
-
|
101
|
-
s.close
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
The specs contain more examples :
|
106
|
-
|
107
|
-
http://github.com/jmettraux/rufus-lua/tree/master/spec/
|
108
|
-
|
109
|
-
rufus-lua's rdoc is at :
|
110
|
-
|
111
|
-
http://rufus.rubyforge.org/rufus-lua/
|
112
|
-
|
113
|
-
|
114
|
-
== compiling liblua.dylib
|
115
|
-
|
116
|
-
original instructions by Adrian Perez at :
|
117
|
-
|
118
|
-
http://lua-users.org/lists/lua-l/2006-09/msg00894.html
|
119
|
-
|
120
|
-
get the source at
|
121
|
-
|
122
|
-
http://www.lua.org/ftp/lua-5.1.4.tar.gz
|
123
|
-
|
124
|
-
then
|
125
|
-
|
126
|
-
tar xzvf lua-5.1.4.tar.gz
|
127
|
-
cd lua-5.1.4
|
128
|
-
|
129
|
-
modify the file src/Makefile as per http://lua-users.org/lists/lua-l/2006-09/msg00894.html
|
130
|
-
|
131
|
-
make
|
132
|
-
make macosx # or make linux ...
|
133
|
-
make -C src liblua.dylib
|
134
|
-
sudo cp src/liblua.dylib /usr/local/lib/
|
135
|
-
|
136
|
-
sudo make macosx install
|
137
|
-
|
138
|
-
|
139
|
-
== build dependencies
|
140
|
-
|
141
|
-
The following gems are needed to run the specs
|
142
|
-
|
143
|
-
sudo gem install bacon
|
144
|
-
|
145
|
-
|
146
|
-
== tested with
|
147
|
-
|
148
|
-
ruby 1.8.7p72, ruby 1.9.1p0, jruby 1.2.0
|
149
|
-
jruby 1.1.6 has an issue with errors raised inside of Ruby functions (callbacks)
|
150
|
-
|
151
|
-
ruby-ffi 0.4.0 and 0.5.0
|
152
|
-
|
153
|
-
|
154
|
-
== dependencies
|
155
|
-
|
156
|
-
the ruby gem 'ffi'
|
157
|
-
|
158
|
-
|
159
|
-
== mailing list
|
160
|
-
|
161
|
-
On the rufus-ruby list :
|
162
|
-
|
163
|
-
http://groups.google.com/group/rufus-ruby
|
164
|
-
|
165
|
-
|
166
|
-
== issue tracker
|
167
|
-
|
168
|
-
http://github.com/jmettraux/rufus-lua/issues
|
169
|
-
|
170
|
-
|
171
|
-
== irc
|
172
|
-
|
173
|
-
irc.freenode.net #ruote
|
174
|
-
|
175
|
-
|
176
|
-
== source
|
177
|
-
|
178
|
-
http://github.com/jmettraux/rufus-lua
|
179
|
-
|
180
|
-
git clone git://github.com/jmettraux/rufus-lua.git
|
181
|
-
|
182
|
-
|
183
|
-
== credits
|
184
|
-
|
185
|
-
many thanks to the authors of Ruby FFI, and of Lua
|
186
|
-
|
187
|
-
http://wiki.github.com/ffi/ffi
|
188
|
-
http://lua.org/
|
189
|
-
|
190
|
-
|
191
|
-
== authors
|
192
|
-
|
193
|
-
John Mettraux, jmettraux@gmail.com, http://jmettraux.wordpress.com
|
194
|
-
Alain Hoang, http://blogs.law.harvard.edu/hoanga/
|
195
|
-
Scott Persinger, http://github.com/scottpersinger/
|
196
|
-
|
197
|
-
|
198
|
-
== the rest of Rufus
|
199
|
-
|
200
|
-
http://rufus.rubyforge.org
|
201
|
-
|
202
|
-
|
203
|
-
== license
|
204
|
-
|
205
|
-
MIT
|
206
|
-
|
207
|
-
Lua itself is licensed under the MIT license as well :
|
208
|
-
|
209
|
-
http://www.lua.org/license.html
|
210
|
-
|