// Package luar provides custom type reflection to gopher-lua // (https://github.com/yuin/gopher-lua). // // Go to Lua conversions // // See documentation of New function. // // Lua to Go conversions // // Lua types are automatically converted to match the output Go type (e.g. // setting a struct field from Lua). // // lua.LNil can be converted to any channel, func, interface, map, pointer, // slice, unsafepointer, or uintptr value. // // lua.LBool values are converted to bool. // // lua.LNumber values are converted to float64. // // lua.LString values are converted to string. // // lua.LChannel values are converted to lua.LChannel. // // *lua.LTable values can be converted to an array, slice, map, struct, or // struct pointer. If the table is being assigned with no type information (i.e. // to an interface{}), the converted value will have the type // map[interface{}]interface{}. // // The Value field of *lua.LUserData values are converted rather than the // *lua.LUserData value itself. // // *lua.LState values are converted to *lua.LState. // // *lua.LFunction values are converted to Go functions. If the function is // being assigned with no type information (i.e. to a interface{}), the function // will have the signature func(...interface{}) []interface{}. The arguments // and return values will be converted using the standard luar conversion rules. // // Thread safety // // This package accesses and modifies the Lua state's registry. This happens // when functions like New are called, and potentially when luar-created values // are used. It is your responsibility to ensure that concurrent access of the // state's registry does not happen. package luar // import "layeh.com/gopher-luar"