Example #1
0
        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);
            }
        }
Example #2
0
File: Table.cs Project: Enyss/RSSE2
        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;
                }
            }
        }