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; }
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; }
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); }
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)); }