Example #1
0
        // parse a game file and choose a game (which can be changed later)
        // TODO: refactor back into compiler
        PolyGame CreateMenuModel()
        {
            if (_input == null)
            {
                if (!File.Exists(SourcePath))
                {
                    throw Error.Fatal("file does not exist: " + SourcePath);
                }
                _input = new StreamReader(SourcePath);
            }

            var parser = Parser.Create();
            var nodes  = parser.ParseNodes(_input, Console.Out, SourcePath).ToList();

            _input.Close();
            if (parser.Error)
            {
                throw Error.Fatal("compilation terminated");
            }

            var generator = Generator.Create();
            var compiler  = Compiler.Create(SourcePath, generator, parser.Symbols);

            compiler.CompileMenu(nodes);

            var evaluator = Evaluator.Create(Console.Out, Console.In);
            var start     = StartCode.Create(evaluator, generator.Code);

            if (Logger.Level >= 4)
            {
                generator.Decode(Logger.Out);
            }

            var menudef = start.CreateMenu();

            _menumodel = MenuModel.Create(menudef);
            if (_gamedefs.Count == 0)
            {
                throw Error.Fatal("no games found");
            }
            //if (Logger.Level >= 3) _menudef.Dump(Logger.Out);

            return(this);
        }
Example #2
0
        public void OnActionExecuted(ActionExecutedContext filterContext)
        {
            //skip requests (json) without a model
            if (filterContext.Controller.ViewData.Model == null)
            {
                return;
            }

            var actionName = filterContext.ActionDescriptor.ActionName;

            if (actionName == "Index")
            {
                return;
            }

            var controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
            var controller     = filterContext.Controller as RestrictedControllerBase;

            MenuModel menu = MenuModel.Create(controller.ViewData.Model, controllerName, actionName, controller.SecurityToken.RoleName);

            menu.BuildMenus();

            controller.ViewBag.Menu = menu;
        }