/// <summary> /// Initializes a new instance of the <see cref="LuaScript"/> class. /// </summary> /// <param name="modules">Lua core modules.</param> public LuaScript(CoreModules modules) { _script = new Script(modules); Factory = new LuaClassFactory(); Set("_factory", Factory); //TODO: Store it in database. Execute(@" function new(className, ...) return _factory.New(className, ...) end function static(className) return _factory.Static(className); end function using(namespace) return _factory.AddNamespace(namespace); end function typenameof(object) local type = type(object); return type == 'userdata' and object.getCLRType().FullName or type end function foreach(collection, action) for i = 0, collection.Count - 1 do action(collection[i]); end end" ); }
public UserScriptRunner(CoreModules modules) { Lua = new Script(modules); Lua.Globals["RegisterHook"] = (Action <DynValue, string>)RegisterHook; Lua.Globals["RegisterCoroutine"] = (Action <DynValue, string, bool>)RegisterCoroutine; Lua.Globals["RemoveHook"] = (Action <string>)RemoveHook; GlobalScriptBindings.Initialize(Lua); }
/// <summary> /// Creates a MoonSharp script with bindings /// </summary> /// <param name="bindings"></param> /// <returns></returns> public static Script CreateBoundScript(ScriptBindings bindings = null, CoreModules modules = CoreModules.Preset_HardSandbox | CoreModules.Coroutine | CoreModules.OS_Time) { Script script = new Script(modules); GlobalScriptBindings.Initialize(script); bindings.Initialize(script); return(script); }
public static IEnumerable <CoreModuleInfo> FindModules(string name, bool ignoreCase = true) { return (CoreModules.Where( cmi => String.Equals( cmi.Name, name, ignoreCase ? StringComparison.InvariantCultureIgnoreCase : StringComparison.InvariantCulture))); }
/// <summary> /// Initializes a new instance of the <see cref="Script"/> class. /// </summary> /// <param name="coreModules">The core modules to be pre-registered in the default global table.</param> public Script(CoreModules coreModules) { Options = new ScriptOptions(DefaultOptions); PerformanceStats = new PerformanceStatistics(); Registry = new Table(this); m_ByteCode = new ByteCode(this); m_GlobalTable = new Table(this).RegisterCoreModules(coreModules); m_MainProcessor = new Processor(this, m_GlobalTable, m_ByteCode); }
public ScriptObject(CoreModules coreModules) : base(coreModules) { guid = System.Guid.NewGuid(); this.Options.ScriptLoader = new BittyScriptLoader(); // This is also where we load all of the BFun globals ((BittyScriptLoader)this.Options.ScriptLoader).IgnoreLuaPathGlobal = true; ((BittyScriptLoader)this.Options.ScriptLoader).ModulePaths = BittyScriptLoader.UnpackStringPaths("/system/?.lua;/objects/?.lua;/modules/?.lua"); }
public LuaBlazorCompiler(CoreModules modules = CoreModules.Preset_HardSandbox) { _script = new(modules) { Options = { Stdin = Stream.Null, Stdout = Stream.Null, Stderr = Stream.Null, }, }; }
Script GenerateLuaScript() { CoreModules modules = CoreModules.Preset_Default; Script script = new Script(modules); script.Options.DebugPrint = s => ConsolePrint(s); script.Globals["io"] = typeof(Lua_IO); script.Globals["sys"] = typeof(Lua_System); return(script); }
private void RegisterModules(LuaModules luaModules, CoreModules modules = CoreModules.Preset_SoftSandbox) { foreach (Enum value in Enum.GetValues(typeof(LuaModules))) { if (luaModules.HasFlag(value) && Convert.ToInt32(value) != 0) { var name = value.ToString().ToLowerInvariant(); var table = AddDefaultFunctions(new Table(Script).RegisterCoreModules(modules)); Script.DoFile(name, table); Script.Globals[name] = table; } } }
/// <summary> /// Initializes a new instance of the <see cref="Script"/> class. /// </summary> /// <param name="coreModules">The core modules to be pre-registered in the default global table.</param> public Script(CoreModules coreModules) { Options = new ScriptOptions(DefaultOptions); PerformanceStats = new PerformanceStatistics(); Registry = new Table(this); m_ByteCode = new ByteCode(this); m_MainProcessor = new Processor(this, m_GlobalTable, m_ByteCode); m_GlobalTable = new Table(this).RegisterCoreModules(coreModules); foreach (var t in TypeDescriptorRegistry.RegisteredTypes) { Type valType = t.Value.Type; if (valType.GetTypeInfo().Assembly.FullName != typeof(Script).GetTypeInfo().Assembly.FullName) { // m_GlobalTable.RegisterModuleType(t.Value.Type); if (t.Value is StandardUserDataDescriptor) { StandardUserDataDescriptor desc = (StandardUserDataDescriptor)t.Value; foreach (var member in desc.Members) { if (member.Value is MethodMemberDescriptor) { MethodMemberDescriptor methDesc = (MethodMemberDescriptor)member.Value; if (methDesc.IsConstructor) { m_GlobalTable.Set(methDesc.Name, methDesc.GetCallbackAsDynValue(this)); } } else if (member.Value is OverloadedMethodMemberDescriptor) { OverloadedMethodMemberDescriptor methDesc = (OverloadedMethodMemberDescriptor)member.Value; foreach (var overloadDesc in methDesc.m_Overloads) { if (overloadDesc is MethodMemberDescriptor) { MethodMemberDescriptor actualDesc = (MethodMemberDescriptor)overloadDesc; if (actualDesc.IsConstructor) { //m_GlobalTable.Set(desc.FriendlyName, actualDesc.GetCallbackAsDynValue(this)); m_GlobalTable.Set(desc.FriendlyName, DynValue.NewCallback(methDesc.GetCallbackFunction(this))); break; } } } } } } } } }
/// <summary> /// Creates a new HookedScriptRunner with the specified modules, throws exception if Coroutines flag is not included /// </summary> /// <param name="modules"></param> public HookedScriptRunner(CoreModules modules) { if (!modules.HasFlag(CoreModules.Coroutine)) { throw new ArgumentException("Modules must contain the Coroutine Flag to be used in a HookedScriptRunner", "modules"); } Lua = new Script(modules); Lua.Globals["Script"] = new ScriptReference(Lua); Lua.Globals["RegisterHook"] = (Action <DynValue, string>)RegisterHook; Lua.Globals["RegisterCoroutine"] = (Action <DynValue, string, bool>)RegisterCoroutine; Lua.Globals["RemoveHook"] = (Action <string>)RemoveHook; //Global init GlobalScriptBindings.Initialize(Lua); }
/// <summary> /// Register the core modules to a table /// </summary> /// <param name="table">The table.</param> /// <param name="modules">The modules.</param> /// <returns></returns> public static Table RegisterCoreModules(this Table table, CoreModules modules) { modules = Script.GlobalOptions.Platform.FilterSupportedCoreModules(modules); if (modules.Has(CoreModules.GlobalConsts)) { RegisterConstants(table); } if (modules.Has(CoreModules.TableIterators)) { RegisterModuleType <TableIteratorsModule>(table); } if (modules.Has(CoreModules.Basic)) { RegisterModuleType <BasicModule>(table); } if (modules.Has(CoreModules.Metatables)) { RegisterModuleType <MetaTableModule>(table); } if (modules.Has(CoreModules.LoadMethods)) { RegisterModuleType <LoadModule>(table); } if (modules.Has(CoreModules.Table)) { RegisterModuleType <TableModule>(table); } if (modules.Has(CoreModules.ErrorHandling)) { RegisterModuleType <ErrorHandlingModule>(table); } if (modules.Has(CoreModules.Coroutine)) { RegisterModuleType <CoroutineModule>(table); } if (modules.Has(CoreModules.Dynamic)) { RegisterModuleType <DynamicModule>(table); } if (modules.Has(CoreModules.PicoMath)) { RegisterModuleType <PicoMathModule>(table); } return(table); }
public static ScriptObject CreateScriptObject(CoreModules coreModules, UPath path, Guid?creator) { var ob = new ScriptObject(coreModules); if (creator == null) { if ((UPath)path == (UPath)KernelHelper.Configuration["driverObject"]) { ob.SetCreatorGuid(Core.GetGuid()); } else { return(null); } } ob.scriptPath = path; ob.Touch(); return(ob); }
public static string GenerateLuaSequence() { CoreModules modules = CoreModules.Preset_HardSandbox; // Allows access to only a select few APIs in Lua code. var luaFile = Resources.Load <TextAsset>("Lua/LuaCode"); string functions; functions = luaFile.ToString(); //final LUA code LuaCode = functions + CsharpCode + @" return sequence end "; Script myLuaScript = new Script(modules); DynValue temp = myLuaScript.DoString(LuaCode); temp = myLuaScript.Call(myLuaScript.Globals["getSequence"]); //calls getSequence function from LUA script and returns the sequence return(temp.ToString()); }
/// <summary> /// Default settings are a soft sandbox and setting up the file system script loader /// </summary> public LuaVM(VMSettings vmSettings, string[] extraPath, CoreModules presetComplete) { m_LuaScript = new Script(presetComplete) { Options = { ScriptLoader = new UnityAssetsScriptLoader(), DebugPrint = log => Logger.Log(Channel.LuaNative, log), } }; ((ScriptLoaderBase)m_LuaScript.Options.ScriptLoader).ModulePaths = extraPath; if ((vmSettings & VMSettings.AttachAPIs) == VMSettings.AttachAPIs) { AttachAPIS(); } if ((vmSettings & VMSettings.AttachEnums) == VMSettings.AttachEnums) { AttachLuaEnums(); } }
public ExecutionConstrainedScript(CoreModules coreModules) : base(coreModules) { }
/// <summary> /// Filters the CoreModules enumeration to exclude non-supported operations /// </summary> /// <param name="module">The requested modules.</param> /// <returns> /// The requested modules, with unsupported modules filtered out. /// </returns> public override CoreModules FilterSupportedCoreModules(CoreModules module) { return module & (~(CoreModules.IO | CoreModules.OS_System)); }
/// <summary> /// Filters the CoreModules enumeration to exclude non-supported operations /// </summary> /// <param name="module">The requested modules.</param> /// <returns> /// The requested modules, with unsupported modules filtered out. /// </returns> public override CoreModules FilterSupportedCoreModules(CoreModules module) { return module; }
public CoreModules FilterSupportedCoreModules(CoreModules module) { throw new NotImplementedException(); }
public override CoreModules FilterSupportedCoreModules(CoreModules module) { return(module & ~CoreModules.LoadMethods); }
public static bool Has(this CoreModules val, CoreModules flag) { return((val & flag) == flag); }
public static Table RegisterCoreModules(this Table table, CoreModules modules) { modules = Platform.Current.FilterSupportedCoreModules(modules); if (modules.Has(CoreModules.GlobalConsts)) { RegisterConstants(table); } if (modules.Has(CoreModules.TableIterators)) { RegisterModuleType <TableIteratorsModule>(table); } if (modules.Has(CoreModules.Basic)) { RegisterModuleType <BasicModule>(table); } if (modules.Has(CoreModules.Metatables)) { RegisterModuleType <MetaTableModule>(table); } if (modules.Has(CoreModules.String)) { RegisterModuleType <StringModule>(table); } if (modules.Has(CoreModules.LoadMethods)) { RegisterModuleType <LoadModule>(table); } if (modules.Has(CoreModules.Table)) { RegisterModuleType <TableModule>(table); } if (modules.Has(CoreModules.Table)) { RegisterModuleType <TableModule_Globals>(table); } if (modules.Has(CoreModules.ErrorHandling)) { RegisterModuleType <ErrorHandlingModule>(table); } if (modules.Has(CoreModules.Math)) { RegisterModuleType <MathModule>(table); } if (modules.Has(CoreModules.Coroutine)) { RegisterModuleType <CoroutineModule>(table); } if (modules.Has(CoreModules.Bit32)) { RegisterModuleType <Bit32Module>(table); } if (modules.Has(CoreModules.Dynamic)) { RegisterModuleType <DynamicModule>(table); } if (modules.Has(CoreModules.OS_System)) { RegisterModuleType <OsSystemModule>(table); } if (modules.Has(CoreModules.OS_Time)) { RegisterModuleType <OsTimeModule>(table); } if (modules.Has(CoreModules.IO)) { RegisterModuleType <IoModule>(table); } if (modules.Has(CoreModules.Debug)) { RegisterModuleType <DebugModule>(table); } return(table); }
/// <summary> /// Filters the CoreModules enumeration to exclude non-supported operations /// </summary> /// <param name="module">The requested modules.</param> /// <returns> /// The requested modules, with unsupported modules filtered out. /// </returns> public abstract CoreModules FilterSupportedCoreModules(CoreModules module);
public static bool Has(this CoreModules val, CoreModules flag) { return (val & flag) == flag; }
private bool AreCoreModulesFullySupported(CoreModules modules) { CoreModules supp = Script.GlobalOptions.Platform.FilterSupportedCoreModules(modules); return supp == modules; }
public static CoreModuleInfo GetModule(Type t) { return(CoreModules.FirstOrDefault(cmi => cmi.TypeOf.IsEqualOrChildOf(t))); }
private bool AreCoreModulesFullySupported(CoreModules modules) { CoreModules supp = Script.GlobalOptions.Platform.FilterSupportedCoreModules(modules); return(supp == modules); }
public BasicScriptRunner(CoreModules modules = CoreModules.Preset_HardSandbox | CoreModules.Coroutine | CoreModules.OS_Time) { Lua = new Script(modules); Lua.Globals["Script"] = new ScriptReference(Lua); GlobalScriptBindings.Initialize(Lua); }
public SubCommandAttribute(int width, int height, CoreModules modules) { Width = width; Height = height; CoreModules = modules; }
public override CoreModules FilterSupportedCoreModules(CoreModules module) { throw new NotImplementedException(); }
/// <summary> /// Filters the CoreModules enumeration to exclude non-supported operations /// </summary> /// <param name="module">The requested modules.</param> /// <returns> /// The requested modules, with unsupported modules filtered out. /// </returns> public override CoreModules FilterSupportedCoreModules(CoreModules module) { return(module & (~(CoreModules.IO | CoreModules.OS_System))); }
public LuaVM(CoreModules presetComplete, string[] extraPath) : this(VMSettings.AttachAll, extraPath, presetComplete) { }
public CoreModules FilterSupportedCoreModules(CoreModules module) { return(module & ~(CoreModules.OS_System | CoreModules.IO)); }
public override CoreModules FilterSupportedCoreModules(CoreModules module) { return(CoreModules.Basic); }
public bool AreCoreModulesFullySupported(CoreModules modules) { return(FilterSupportedCoreModules(modules) == modules); }