Beispiel #1
0
        private void RegisterAll(BSMLParser parser)
        {
            if (Registered)
            {
                return;
            }

            foreach (BSMLTag tag in InstantiateOfType <BSMLTag>())
            {
                parser.RegisterTag(tag);
            }

            foreach (BSMLMacro macro in InstantiateOfType <BSMLMacro>())
            {
                parser.RegisterMacro(macro);
            }

            foreach (TypeHandler handler in InstantiateOfType <TypeHandler>())
            {
                parser.RegisterTypeHandler(handler);
            }

            RegisterCustomComponents(parser);

            Registered = true;
        }
Beispiel #2
0
        private void RegisterAll(BSMLParser parser)
        {
            if (Registered)
            {
                return;
            }

            foreach (var tag in InstantiateOfType <BSMLTag>())
            {
                parser.RegisterTag(tag);
            }

            foreach (var macro in InstantiateOfType <BSMLMacro>())
            {
                parser.RegisterMacro(macro);
            }

            foreach (var handler in InstantiateOfType <TypeHandler>())
            {
                parser.RegisterTypeHandler(handler);
            }

            RegisterCustomComponents(parser);

#if false
            DocCustoms(parser);
#endif

            _logger.Info("Registered Custom Components");

            Registered = true;
        }
Beispiel #3
0
        private void RegisterCustomComponents(BSMLParser parser)
        {
            foreach (var type in GetListOfType <CustomUiComponent>())
            {
                parser.RegisterTag(new CustomUiComponentTag(type));
            }

            foreach (var type in GetListOfType <Popup>())
            {
                parser.RegisterTag(new PopupTag(type));
            }
        }
        public void ElementParsing()
        {
            var bsml = BSMLParser.LoadFrom(Assembly.GetExecutingAssembly(), "Tests", new StringReader(Literals.CustomElementBSML));

            var doc = bsml.Doc;

            var owner = typeof(MainPanelController);
            var state = new BSMLParser.ParseState {
                Ref = new MainPanelController(), Type = owner
            };

            var elems = bsml.ReadTree(new[] { doc.DocumentElement.FirstChild }, state).ToArray();

            VerifyCustomElementStringRootChildren(elems, owner);
        }
        public void AttributesParsing()
        {
            var bsml = BSMLParser.LoadFrom(Assembly.GetExecutingAssembly(), "Tests", new StringReader(Literals.CustomElementBSML));

            var doc = bsml.Doc;

            var ogOwner = typeof(MainPanelController);
            var state   = new BSMLParser.ParseState {
                Ref = new MainPanelController(), Type = ogOwner
            };
            var attrs = bsml.GetAttributes(doc.DocumentElement.FirstChild as XmlElement, ref state, out var hasController).ToArray();

            Assert.IsFalse(hasController);

            VerifyCustomElementStringAttributes(attrs, ogOwner);
        }
Beispiel #6
0
        private void DocCustoms(BSMLParser parser)
        {
            var thisAsm      = Assembly.GetExecutingAssembly();
            var tags         = parser.GetField <Dictionary <string, BSMLTag>, BSMLParser>("tags");
            var typeHandlers = parser.GetField <List <TypeHandler>, BSMLParser>("typeHandlers");

            var additionalCssProps = new HashSet <string> {
                "style"
            };

            var cssDataObject = new JObject();

            cssDataObject.Add("version", 1.1);
            var propArray = new JArray();

            cssDataObject.Add("properties", propArray);

            var schemaTemplate = new WebClient().DownloadString("https://raw.githubusercontent.com/monkeymanboy/BSML-Docs/gh-pages/BSMLSchema.xsd");
            var schema         = XmlSchema.Read(XmlReader.Create(new StringReader(schemaTemplate)), (sender, args) => { });

            var attrDict = new Dictionary <string, XmlSchemaAttribute>();

            foreach (var item in schema.Items)
            {
                if (item is XmlSchemaComplexType complexType)
                {
                    foreach (XmlSchemaAttribute attribute in complexType.Attributes)
                    {
                        if (!attrDict.ContainsKey(attribute.Name))
                        {
                            attrDict.Add(attribute.Name, attribute);
                        }

                        additionalCssProps.Add(attribute.Name);
                    }

                    complexType.Attributes.Add(new XmlSchemaAttribute {
                        Name = "style"
                    });

                    var tag = tags.Values.FirstOrDefault(x => x.GetType().Name == complexType.Name);
                    if (tag is { })
        public void RootParsing()
        {
            var bsml = BSMLParser.LoadFrom(Assembly.GetExecutingAssembly(), "Tests", new StringReader(Literals.CustomElementBSML));

            var elem = bsml.Parse();

            var baseController = elem.Controller;

            Assert.IsInstanceOfType(baseController, typeof(MainPanelController));
            var controller = baseController as MainPanelController;

            Assert.AreEqual(elem, controller.OwnedElement);

            Assert.IsInstanceOfType(elem, typeof(PanelRootElement));
            var panel = elem as PanelRootElement;

            Assert.AreEqual(1, panel.Count);

            var child = panel[0];

            Assert.AreEqual(child, controller.Ref);

            VerifyCustomElementStringRootChildren(panel.ToArray(), typeof(MainPanelController));
        }