/// <summary> /// Write out class syntax /// </summary> /// <param name="reflection">An XPath navigator containing the member information</param> /// <param name="writer">The syntax writer to which the information is written</param> /// <param name="prefix">The web control prefix to use</param> private static void WriteClassSyntax(XPathNavigator reflection, SyntaxWriter writer, string prefix) { string name = (string)reflection.Evaluate(nameExpression); writer.WriteStartBlock(LanguageName, StyleIdName); writer.WriteString("<"); writer.WriteString(prefix); writer.WriteString(":"); writer.WriteString(name); writer.WriteString(" />"); writer.WriteEndBlock(); }
/// <inheritdoc /> public override void WriteSyntax(XPathNavigator reflection, SyntaxWriter writer) { if (reflection == null) { throw new ArgumentNullException(nameof(reflection)); } if (writer == null) { throw new ArgumentNullException(nameof(writer)); } writer.WriteStartBlock(this.Language, this.StyleId); // Check the list of assemblies for which to generate XAML syntax string assemblyName = (string)reflection.Evaluate(apiContainingAssemblyExpression); string namespaceName = (string)reflection.Evaluate(apiContainingNamespaceNameExpression); if (!xamlAssemblies.ContainsKey(assemblyName)) { WriteXamlBoilerplate(XamlBoilerplateID.nonXamlAssemblyBoilerplate, writer); } else { string group = (string)reflection.Evaluate(apiGroupExpression); switch (group) { case "namespace": WriteNamespaceSyntax(reflection, writer); break; case "type": WriteTypeSyntax(reflection, writer); break; case "member": WriteMemberSyntax(reflection, writer); break; } WriteXamlXmlnsUri(assemblyName, namespaceName, writer); } writer.WriteEndBlock(); }
/// <summary> /// Write out event syntax /// </summary> /// <param name="reflection">An XPath navigator containing the member information</param> /// <param name="writer">The syntax writer to which the information is written</param> /// <param name="prefix">The web control prefix to use</param> private static void WriteEventSyntax(XPathNavigator reflection, SyntaxWriter writer, string prefix) { string name = (string)reflection.Evaluate(nameExpression); string declaringType = (string)reflection.Evaluate(declaringTypeExpression); string handlerType = (string)reflection.Evaluate(eventHandlerTypeExpression); writer.WriteStartBlock(LanguageName, StyleIdName); writer.WriteString("<"); writer.WriteString(prefix); writer.WriteString(":"); writer.WriteReferenceLink(declaringType); writer.WriteString(" "); writer.WriteString("On"); writer.WriteString(name); writer.WriteString("=\""); writer.WriteReferenceLink(handlerType); writer.WriteString("\" />"); writer.WriteEndBlock(); }
/// <inheritdoc /> public override void WriteSyntax(XPathNavigator reflection, SyntaxWriter writer) { writer.WriteStartBlock(this.Language, this.StyleId); // Check the list of assemblies for which to generate XAML syntax string assemblyName = (string)reflection.Evaluate(apiContainingAssemblyExpression); string namespaceName = (string)reflection.Evaluate(apiContainingNamespaceNameExpression); if(!xamlAssemblies.ContainsKey(assemblyName)) { WriteXamlBoilerplate(XamlBoilerplateID.nonXamlAssemblyBoilerplate, writer); } else { string group = (string)reflection.Evaluate(apiGroupExpression); switch(group) { case "namespace": WriteNamespaceSyntax(reflection, writer); break; case "type": WriteTypeSyntax(reflection, writer); break; case "member": WriteMemberSyntax(reflection, writer); break; } WriteXamlXmlnsUri(assemblyName, namespaceName, writer); } writer.WriteEndBlock(); }
/// <summary> /// Write out property syntax /// </summary> /// <param name="reflection">An XPath navigator containing the member information</param> /// <param name="writer">The syntax writer to which the information is written</param> /// <param name="prefix">The web control prefix to use</param> private static void WritePropertySyntax(XPathNavigator reflection, SyntaxWriter writer, string prefix) { bool set = (bool)reflection.Evaluate(propertyIsSettable); if (!set) { return; } string name = (string)reflection.Evaluate(nameExpression); string declaringType = (string)reflection.Evaluate(declaringTypeExpression); string propertyType = (string)reflection.Evaluate(propertyTypeExpression); bool isInnerProperty = (bool)reflection.Evaluate(propertyIsInnerProperty); writer.WriteStartBlock(LanguageName, StyleIdName); if (isInnerProperty) { // inner property logic writer.WriteString("<"); writer.WriteString(prefix); writer.WriteString(":"); writer.WriteReferenceLink(declaringType); writer.WriteString(">"); writer.WriteLine(); writer.WriteString("\t"); writer.WriteString("<"); writer.WriteString(name); writer.WriteString(">"); if (String.IsNullOrEmpty(propertyType)) { writer.WriteParameter("value"); } else if (propertyType == "T:System.Boolean") { writer.WriteString("True|False"); } else { writer.WriteReferenceLink(propertyType); } writer.WriteString("</"); writer.WriteString(name); writer.WriteString(">"); writer.WriteLine(); writer.WriteString("</"); writer.WriteString(prefix); writer.WriteString(":"); writer.WriteReferenceLink(declaringType); writer.WriteString(">"); } else { // normal property logic writer.WriteString("<"); writer.WriteString(prefix); writer.WriteString(":"); writer.WriteReferenceLink(declaringType); writer.WriteString(" "); writer.WriteString(name); writer.WriteString("=\""); if (String.IsNullOrEmpty(propertyType)) { writer.WriteParameter("value"); } else if (propertyType == "T:System.Boolean") { writer.WriteString("True|False"); } else { writer.WriteReferenceLink(propertyType); } writer.WriteString("\" />"); } writer.WriteEndBlock(); }
/// <summary> /// Write out property syntax /// </summary> /// <param name="reflection">An XPath navigator containing the member information</param> /// <param name="writer">The syntax writer to which the information is written</param> /// <param name="prefix">The web control prefix to use</param> private static void WritePropertySyntax(XPathNavigator reflection, SyntaxWriter writer, string prefix) { bool set = (bool)reflection.Evaluate(propertyIsSettable); if(!set) return; string name = (string)reflection.Evaluate(nameExpression); string declaringType = (string)reflection.Evaluate(declaringTypeExpression); string propertyType = (string)reflection.Evaluate(propertyTypeExpression); bool isInnerProperty = (bool)reflection.Evaluate(propertyIsInnerProperty); writer.WriteStartBlock(LanguageName, StyleIdName); if(isInnerProperty) { // inner property logic writer.WriteString("<"); writer.WriteString(prefix); writer.WriteString(":"); writer.WriteReferenceLink(declaringType); writer.WriteString(">"); writer.WriteLine(); writer.WriteString("\t"); writer.WriteString("<"); writer.WriteString(name); writer.WriteString(">"); if(String.IsNullOrEmpty(propertyType)) writer.WriteParameter("value"); else if(propertyType == "T:System.Boolean") writer.WriteString("True|False"); else writer.WriteReferenceLink(propertyType); writer.WriteString("</"); writer.WriteString(name); writer.WriteString(">"); writer.WriteLine(); writer.WriteString("</"); writer.WriteString(prefix); writer.WriteString(":"); writer.WriteReferenceLink(declaringType); writer.WriteString(">"); } else { // normal property logic writer.WriteString("<"); writer.WriteString(prefix); writer.WriteString(":"); writer.WriteReferenceLink(declaringType); writer.WriteString(" "); writer.WriteString(name); writer.WriteString("=\""); if(String.IsNullOrEmpty(propertyType)) writer.WriteParameter("value"); else if(propertyType == "T:System.Boolean") writer.WriteString("True|False"); else writer.WriteReferenceLink(propertyType); writer.WriteString("\" />"); } writer.WriteEndBlock(); }