private static Table CreateModuleNamespace(Table gtable, Type t) { MoonSharpModuleAttribute attr = (MoonSharpModuleAttribute)t.GetCustomAttributes(typeof(MoonSharpModuleAttribute), false).First(); if (string.IsNullOrEmpty(attr.Namespace)) { return(gtable); } else { Table table = null; DynValue found = gtable.Get(attr.Namespace); if (found.Type == DataType.Table) { table = found.Table; } else { table = new Table(gtable.OwnerScript); gtable.Set(attr.Namespace, DynValue.NewTable(table)); } DynValue package = gtable.RawGet("package"); if (package == null || package.Type != DataType.Table) { gtable.Set("package", package = DynValue.NewTable(gtable.OwnerScript)); } DynValue loaded = package.Table.RawGet("loaded"); if (loaded == null || loaded.Type != DataType.Table) { package.Table.Set("loaded", loaded = DynValue.NewTable(gtable.OwnerScript)); } loaded.Table.Set(attr.Namespace, DynValue.NewTable(table)); return(table); } }
public Table(MoonSharp.Interpreter.Table luaTable) : base() { IEnumerable <DynValue> keys = luaTable.Keys.AsEnumerable(); foreach (DynValue key in keys) { DynValue value = luaTable.Get(key); switch (value.Type) { case DataType.Table: this.Add(key.String, new Table(value.Table)); break; case DataType.String: this.Add(key.String, value.String); break; case DataType.Number: this.Add(key.String, value.Number); break; } } }