private static bool GetIsSingleRow(SimpleTypeStructureNode node)
        {
            switch (node.NodeType)
            {
                case SimpleTypeStructureNodeType.Any:
                case SimpleTypeStructureNodeType.Mixed:
                case SimpleTypeStructureNodeType.NamedType:
                case SimpleTypeStructureNodeType.List:
                case SimpleTypeStructureNodeType.Union:
                    break;
                default:
                    return false;
            }
            foreach (var child in node.Children)
            {
                switch (child.NodeType)
                {
                    case SimpleTypeStructureNodeType.Union:
                    case SimpleTypeStructureNodeType.List:
                    case SimpleTypeStructureNodeType.Restriction:
                        return false;
                }
            }

            return true;
        }
        public static bool GetIsSingleRow(SimpleTypeStructureNode node)
        {
            switch (node.NodeType)
            {
            case SimpleTypeStructureNodeType.Any:
            case SimpleTypeStructureNodeType.Mixed:
            case SimpleTypeStructureNodeType.NamedType:
            case SimpleTypeStructureNodeType.List:
            case SimpleTypeStructureNodeType.Union:
                break;

            default:
                return(false);
            }
            foreach (var child in node.Children)
            {
                switch (child.NodeType)
                {
                case SimpleTypeStructureNodeType.Union:
                case SimpleTypeStructureNodeType.List:
                case SimpleTypeStructureNodeType.Restriction:
                    return(false);
                }
            }

            return(true);
        }
        private SimpleTypeStructureNode AddLeaf(SimpleTypeStructureNodeType nodeType, XmlSchemaObject obj)
        {
            if (_nodeStack.Count == 0)
            {
                var root = new SimpleTypeStructureNode {
                    NodeType = SimpleTypeStructureNodeType.Root
                };
                _nodeStack.Push(root);
            }

            var node = new SimpleTypeStructureNode
            {
                NodeType = nodeType,
                Node     = obj
            };

            _nodeStack.Peek().Children.Add(node);
            return(node);
        }
        public static void WriteSimpleTypeStrucure(this MamlWriter writer, Context context, SimpleTypeStructureNode root)
        {
            if (root == null || root.Children.Count == 0)
                return;

            if (root.Children.Count == 1)
            {
                var node = root.Children[0];
                var isSingleRow = GetIsSingleRow(node);
                if (isSingleRow)
                {
                    writer.WriteSingle(context.TopicManager, node);
                    return;
                }
            }

            writer.StartTable();

            writer.StartTableHeader();
            writer.StartTableRow();

            writer.StartTableRowEntry();
            writer.WriteString("Item");
            writer.EndTableRowEntry();

            writer.StartTableRowEntry();
            writer.WriteString("Facet Value");
            writer.EndTableRowEntry();

            writer.StartTableRowEntry();
            writer.WriteString("Description");
            writer.EndTableRowEntry();

            writer.EndTableRow();
            writer.EndTableHeader();

            writer.WriteNodes(context, root.Children, 0);

            writer.EndTable();
        }
        private SimpleTypeStructureNode AddLeaf(SimpleTypeStructureNodeType nodeType, XmlSchemaObject obj)
        {
            if (_nodeStack.Count == 0)
            {
                var root = new SimpleTypeStructureNode { NodeType = SimpleTypeStructureNodeType.Root };
                _nodeStack.Push(root);
            }

            var node = new SimpleTypeStructureNode
                       {
                           NodeType = nodeType,
                           Node = obj
                       };

            _nodeStack.Peek().Children.Add(node);
            return node;
        }
 private static void WriteConstructor(this MamlWriter writer, int level, TopicManager topicManager, SimpleTypeStructureNode node, ArtItem constructionArtItem, string constructName)
 {
     writer.StartTableRowEntry();
     writer.WriteHtmlIndent(level);
     writer.StartHtmlArtItem(constructionArtItem);
     if (ContainsNamedTypes(node.Children))
         writer.WriteTypeNamesMarkup(topicManager, node.Children);
     else
         writer.WriteString(constructName);
     writer.EndHtmlArtItem();
     writer.EndTableRowEntry();
     writer.StartTableRowEntry();
     writer.EndTableRowEntry();
 }
 private static void WriteSingleItemAndFacet(this MamlWriter writer, int level, TopicManager topicManager, SimpleTypeStructureNode node)
 {
     writer.StartTableRowEntry();
     writer.WriteHtmlIndent(level);
     writer.WriteSingle(topicManager, node);
     writer.EndTableRowEntry();
     writer.StartTableRowEntry();
     writer.EndTableRowEntry();
 }
 private static void WriteSingle(this MamlWriter writer, TopicManager topicManager, SimpleTypeStructureNode node)
 {
     switch (node.NodeType)
     {
         case SimpleTypeStructureNodeType.Any:
             writer.WriteString("Any");
             break;
         case SimpleTypeStructureNodeType.Mixed:
             writer.WriteString("Mixed");
             break;
         case SimpleTypeStructureNodeType.NamedType:
             writer.WriteTypeName(topicManager, (XmlSchemaType)node.Node);
             break;
         case SimpleTypeStructureNodeType.List:
             writer.StartHtmlArtItem(ArtItem.List);
             writer.WriteTypeNamesMarkup(topicManager, node.Children);
             writer.EndHtmlArtItem();
             break;
         case SimpleTypeStructureNodeType.Union:
             writer.StartHtmlArtItem(ArtItem.Union);
             writer.WriteTypeNamesMarkup(topicManager, node.Children);
             writer.EndHtmlArtItem();
             break;
         default:
             throw ExceptionBuilder.UnhandledCaseLabel(node.NodeType);
     }
 }
        private static void WriteFacet(this MamlWriter writer, int level, SimpleTypeStructureNode node, string facetType)
        {
            var facetValue = ((XmlSchemaFacet)node.Node).Value;

            writer.StartTableRowEntry();
            writer.WriteHtmlIndent(level);
            writer.WriteHtmlArtItemWithText(ArtItem.Facet, facetType);
            writer.EndTableRowEntry();

            writer.StartTableRowEntry();
            writer.WriteString(facetValue);
            writer.EndTableRowEntry();
        }
 private static void WriteConstructorItemAndFacet(this MamlWriter writer, int level, TopicManager topicManager, SimpleTypeStructureNode node)
 {
     switch (node.NodeType)
     {
         case SimpleTypeStructureNodeType.Restriction:
             writer.WriteConstructor(level, topicManager, node, ArtItem.Restriction, "Restriction");
             break;
         case SimpleTypeStructureNodeType.List:
             writer.WriteConstructor(level, topicManager, node, ArtItem.List, "List");
             break;
         case SimpleTypeStructureNodeType.Union:
             writer.WriteConstructor(level, topicManager, node, ArtItem.Union, "Union");
             break;
         case SimpleTypeStructureNodeType.FacetEnumeration:
             writer.WriteFacet(level, node, "Enumeration");
             break;
         case SimpleTypeStructureNodeType.FacetMaxExclusive:
             writer.WriteFacet(level, node, "Max Exclusive");
             break;
         case SimpleTypeStructureNodeType.FacetMaxInclusive:
             writer.WriteFacet(level, node, "Max Inclusive");
             break;
         case SimpleTypeStructureNodeType.FacetMinExclusive:
             writer.WriteFacet(level, node, "Min Exclusive");
             break;
         case SimpleTypeStructureNodeType.FacetMinInclusive:
             writer.WriteFacet(level, node, "Min Inclusive");
             break;
         case SimpleTypeStructureNodeType.FacetFractionDigits:
             writer.WriteFacet(level, node, "Fraction Digits");
             break;
         case SimpleTypeStructureNodeType.FacetLength:
             writer.WriteFacet(level, node, "Length");
             break;
         case SimpleTypeStructureNodeType.FacetMaxLength:
             writer.WriteFacet(level, node, "Max Length");
             break;
         case SimpleTypeStructureNodeType.FacetMinLength:
             writer.WriteFacet(level, node, "Min Length");
             break;
         case SimpleTypeStructureNodeType.FacetTotalDigits:
             writer.WriteFacet(level, node, "Total Digits");
             break;
         case SimpleTypeStructureNodeType.FacetPattern:
             writer.WriteFacet(level, node, "Pattern");
             break;
         case SimpleTypeStructureNodeType.FacetWhiteSpace:
             writer.WriteFacet(level, node, "White Space");
             break;
         default:
             throw ExceptionBuilder.UnhandledCaseLabel(node.NodeType);
     }
 }
 public static void WriteContentTypeSection(this MamlWriter writer, Context context, SimpleTypeStructureNode rootNode)
 {
     writer.StartSection("Content Type", "contentType");
     writer.WriteSimpleTypeStrucure(context, rootNode);
     writer.EndSection();
 }