Coder Social home page Coder Social logo

ruby-lua's Introduction

ruby-lua

Call Lua from Ruby (and Ruby from Lua in Ruby)

Language::Lua - Lua interpretor for Ruby

SYNOPSIS

require 'language/lua'
lua = Language::Lua.new()
lua.eval("script.lua")

out = lua.my_lua_function( ... )
print out;

Ruby API

class Language::Lua

new

Create a new Lua interpretor

load(filename)

Load a Lua Script

dofile(filename)

alias for load

call(, fname, *args)

Call the Lua function named fname with arguemnts *args

If first argument is true, the function result is not poped from the Lua Stack (default: false).

var(, vname, value)

Return the lua vname value or set the lua vname if value is given.

eval(lua_code)

Evaluate the lua_code

pop()

Pop the lua value on the top of the Lua stack

push(value)

Push the value on the top of the Lua stack

stack_size()

Return the Lua stack size

stack_dump()

Display the content of the Lua stack

class Language::Lua::Function

call(*args)

Call the current Lua function with arguments *args

Lua

Ruby/Lua adds the following new method to Lua :

ruby(“ruby_function”, …)

In your Lua code, call ruby_function.

Contributing to ruby-lua

  • Check out the latest master to make sure the feature hasn’t been implemented or the bug hasn’t been fixed yet

  • Check out the issue tracker to make sure someone already hasn’t requested it and/or contributed it

  • Fork the project

  • Start a feature/bugfix branch

  • Commit and push until you are happy with your contribution

  • Make sure to add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.

Copyright © 2010-2013 Gregoire Lejeune. See LICENSE.txt for further details.

ruby-lua's People

Contributors

glejeune avatar dim avatar

Stargazers

Mohamed Singano avatar  avatar Kazoya - Zaid Mermam avatar Yasin ATEŞ avatar |Ech0| avatar  avatar Suke Han avatar Mark Anderson avatar EOS. avatar Benoit Giannangeli avatar Rong.W avatar  avatar Sean Huber avatar Tom Noogen avatar Timur Ismagilov avatar Eugene avatar Chris Olstrom avatar NASA avatar Ender Ahmet Yurt avatar Andrew Nesbitt avatar Gabriel Corado avatar Sean Hagen avatar Angus H. avatar Brian Lauber avatar Scott Holtkamp avatar Satoru Abe avatar dn365 avatar Rodion V avatar terukazu kosuga avatar Hulk Fu avatar Pete Brumm avatar Leonid Shagabutdinov avatar Tim Varley avatar Lilith River avatar Ayed Aldossary avatar Jack Wu avatar Edward Eviston avatar Reda NOUSHI avatar Serhii Herniak avatar Zheng Yan avatar Rajesh Koilpillai avatar Jonathan Lai avatar Alexander Ulitin avatar John Mettraux avatar Cyberarm avatar  avatar Sam Green avatar OKUMURA Yoshio avatar Kostas Nasis avatar Mauricio Gomes avatar Rafael Valverde avatar Rich Lane avatar  avatar Philippe Monnet avatar Oleksiy Kovyrin avatar

Watchers

 avatar jcbloch avatar  avatar James Cloos avatar Leonid Shagabutdinov avatar  avatar

ruby-lua's Issues

Error trying to use Ruby-lua

Hello,

When running ruby-luas example code i get:

.9.3p194 :034 > lua = Language::Lua.new()
dyld: lazy symbol binding failed: Symbol not found: _lua_newstate
Referenced from: /Users/daniel/.rvm/gems/ruby-1.9.3-p194/gems/ruby-lua-0.3.0/lib/language/lua.bundle
Expected in: flat namespace

dyld: Symbol not found: _lua_newstate
Referenced from: /Users/daniel/.rvm/gems/ruby-1.9.3-p194/gems/ruby-lua-0.3.0/lib/language/lua.bundle
Expected in: flat namespace

(irb):34: [BUG] Segmentation fault
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.4.2]

I have Lua and ruby installed + the gem..

Translate Lua functions to Ruby procs

Currently ruby-lua exposes functions inside Lua tables as nil:

1.9.3p194 :006 > lua.var('string')
 => {"sub"=>nil, "upper"=>nil, "len"=>nil, "gfind"=>nil, "rep"=>nil, "find"=>nil, "match"=>nil, "char"=>nil, "dump"=>nil, "gmatch"=>nil, "reverse"=>nil, "byte"=>nil, "format"=>nil, "gsub"=>nil, "lower"=>nil} 
1.9.3p194 :007 >

Is there some reasonably simple way to expose them, perhaps as Ruby procs which call the Lua function?

It would also be great to be able to call Lua functions from inside tables, to avoid having to export everything to a global:

1.9.3p194 :010 > lua.call(false, 'string.len', 'foo')
SystemCallError: unknown error - error running lua function `string.len': attempt to call a nil value
    from (irb):10:in `call'
    from (irb):10
    from /Users/norman/.rvm/gems/ruby-1.9.3-p194-perf/gems/railties-3.2.6/lib/rails/commands/console.rb:47:in `start'
    from /Users/norman/.rvm/gems/ruby-1.9.3-p194-perf/gems/railties-3.2.6/lib/rails/commands/console.rb:8:in `start'
    from /Users/norman/.rvm/gems/ruby-1.9.3-p194-perf/gems/railties-3.2.6/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

Ubuntu 12.04 LTS build fails

Ubuntu's packages lua as lua5.1. To build correctly I had to update extconf.rb to:

elsif ex = find_executable( "pkg-config" )
   ["lua", "lua5.1"].any? do |lib|
     res = `#{ex} --libs #{lib}`.chomp
     next false if res.empty?

     $LDFLAGS << " #{res}"
     $CFLAGS  << ' ' + `#{ex} --cflags #{lib}`.chomp
     true
   end
else

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.