Giter Club home page Giter Club logo

dotlua's Introduction

dotLua

dotLua is a Lua 5.2 binder for C# utilizing C# 4.0 dynamic class, by interop with Lua native C DLL.

Example

test.lua:

function say_hi(...)
	if ... ~= nil then
		message = "Hi"
		for _, v in pairs({...}) do
			message = message .. ", " .. v
		end
		print(message)
	else
		print("Hi from Lua")
	end
end

function raise(message)
	error(message)
end

GlobalNumber = 3
GlobalString = "Good luck~"
GlobalBoolean = true

function return_0_str()
	return 0, "Hi~"
end

In C#:

using (dynamic lua = new Lua())
{
	lua.Do("test.lua");
	lua.say_hi();
	lua.say_hi("dotLua");
	lua.say_hi(3.1415926);
	lua.say_hi(3.1415926, "dotLua", "Sunday");

	Console.WriteLine("Global Value: {0}", lua.GlobalNumber);
	Console.WriteLine("Global Value: {0}", lua.GlobalString);
	
	IList<dynamic> result0str = lua.return_0_str();
	Assert.AreEqual(2, result0str.Count);
	Assert.AreEqual(0, result0str[0]);
	Assert.AreEqual("Hi~", result0str[1]);

	try
	{
		lua.raise("Boom!");
		Console.WriteLine("Error: Lua error should be converted to an exception!");
	}
	catch (InvocationException e)
	{
		Console.WriteLine(e.Message);
	}
}

Features

  • Calling a static function defined in a Lua script and acquiring results.
  • Getting a global number/string/boolean field defined in a Lua script.

TO DO

  • Getting other Lua primitive types of global values in a Lua script.
  • Calling methods of a Lua object. (Defined in metatable)
  • Register a C# delegate to be called from a Lua script.
  • Other Lua feature support.

License

This program is free software. It comes without any warranty, to the extent permitted by applicable law. You can redistribute it and/or modify it under the terms of the Do What The Fuck You Want To Public License, Version 2, as published by Sam Hocevar. See http://sam.zoy.org/wtfpl/COPYING for more details.

dotlua's People

Contributors

xinhuang avatar

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.