Exemplo n.º 1
0
        private static void ParseNamespace(DocumentData parent, INamespaceSymbol symbol, string rootName, IEnumerable <string> namespacesBegins, int namespaceIndex, string id)
        {
            var data = parent.GetNamespace(symbol);

            if (data == null)
            {
                data = CreateDocumentData <NamespaceDocumentData>(symbol, rootName, id);
                parent.AddNamespace(data);
            }
            else
            {
                data.SupportedProjects.Add(id);
            }

            // Namespaces
            var namespaces = symbol.GetNamespaceMembers();

            foreach (var namespaceSymbol in namespaces)
            {
                if (namespacesBegins == null || namespacesBegins.Count() == 0 || namespacesBegins.Any(n => ValidNamespace(namespaceIndex, namespaceSymbol, n)))
                {
                    ParseNamespace(parent, namespaceSymbol, data.Name, namespacesBegins, namespaceIndex + 1, id);
                }
            }

            if (namespacesBegins == null || namespacesBegins.Count() == 0 || namespacesBegins.Any(n => ValidNamespace(namespaceIndex, symbol, n)))
            {
                // Types
                var typeMembers = symbol.GetTypeMembers();
                foreach (var typeMember in typeMembers)
                {
                    ParseTypeMember(data, typeMember, data.FullName, id);
                }
            }
        }