コード例 #1
0
        private SDType CreateSDType(INamedTypeSymbol typeSymbol, SDNamespace sdNamespace)
        {
            var sdType = new SDType(typeSymbol.GetIdentifier(), typeSymbol.Name, sdNamespace)
            {
                Accessibility     = typeSymbol.DeclaredAccessibility.ToString().ToLower(),
                IsAbstract        = typeSymbol.IsAbstract,
                IsReferenceType   = typeSymbol.IsReferenceType,
                IsSealed          = typeSymbol.IsSealed,
                IsStatic          = typeSymbol.IsStatic,
                IsProjectStranger = false,
                Kind = typeSymbol.TypeKind.ToString().ToLower()
            };

            foreach (var reference in typeSymbol.DeclaringSyntaxReferences.ToList())
            {
                var region = new SDRegion
                {
                    Start    = reference.Span.Start,
                    End      = reference.Span.End,
                    Filename = reference.SyntaxTree.FilePath
                };
                sdType.Regions.Add(region);
            }
            return(sdType);
        }
コード例 #2
0
        private void InsertNamespaceDescription(SDNamespace sdNamespace)
        {
            var description = sdNamespace.Descriptions.GetElementOrDefault(_docLanguage);

            if (description != null)
            {
                _wordTemplater.AppendMarkdown(new Markdown().Transform(description.Transform(new Helper(_sdProject).TransformLinkToken)));
            }
        }
コード例 #3
0
        public NamespaceViewModel(SDNamespace sdNamespace, ObservableCollection <string> excludedIdentifiers)
            : base(sdNamespace.Fullname, null, excludedIdentifiers)
        {
            Text  = sdNamespace.Fullname;
            Image = "pack://application:,,,/SharpDox.Resources;component/Icons/Namespace_public.png";

            foreach (var sdType in sdNamespace.Types)
            {
                Children.Add(new TypeViewModel(sdType, this, excludedIdentifiers));
            }
        }
コード例 #4
0
        public NamespaceViewModel(SDNamespace sdNamespace, ICoreConfigSection sharpDoxConfig)
            : base(sdNamespace.Fullname, null, sharpDoxConfig)
        {
            Text  = sdNamespace.Fullname;
            Image = "pack://application:,,,/SharpDox.GUI;component/Resources/Icons/Namespace_public.png";

            foreach (var sdType in sdNamespace.Types)
            {
                Children.Add(new TypeViewModel(sdType, this, sharpDoxConfig));
            }
        }
コード例 #5
0
ファイル: NRefactoryParser.cs プロジェクト: llenroc/sharpDox
        private void StructureParseNamespaces(CSharpProject project, SDRepository sdRepository)
        {
            var types = project.Compilation.MainAssembly.TopLevelTypeDefinitions.ToList();

            for (int j = 0; j < types.Count; j++)
            {
                PostParseMessage(_parserStrings.ParsingNamespace + ": " + types[j].Namespace);

                var sdNamespace = new SDNamespace(types[j].Namespace);
                sdRepository.AddNamespace(sdNamespace);
            }
        }
コード例 #6
0
        public void InsertNamespace(SDNamespace sdNamespace, int navigationLevel)
        {
            _wordTemplater.AppendHeader(sdNamespace.Fullname, navigationLevel);
            InsertNamespaceDescription(sdNamespace);
            InsertNamespaceOverview(sdNamespace, navigationLevel + 1);
            InsertUseUsedBlock(sdNamespace, navigationLevel + 1);
            _wordTemplater.AppendPageBreak();

            foreach (var sdType in sdNamespace.Types)
            {
                _typeBuilder.InsertType(sdType, navigationLevel + 1);
            }
        }
コード例 #7
0
        private void InsertUseUsedBlock(SDNamespace sdNamespace, int navigationLevel)
        {
            if (sdNamespace.Uses.Count > 0)
            {
                _wordTemplater.AppendHeader(_wordStrings.Uses, navigationLevel);
                sdNamespace.Uses.Select(u => u.Fullname).ToList().ForEach(u => _wordTemplater.AppendParagraph(u, "CenteredNoMargin"));
            }

            if (sdNamespace.UsedBy.Count > 0)
            {
                _wordTemplater.AppendHeader(_wordStrings.UsedBy, navigationLevel);
                sdNamespace.UsedBy.Select(u => u.Fullname).ToList().ForEach(u => _wordTemplater.AppendParagraph(u, "CenteredNoMargin"));
            }
        }
コード例 #8
0
ファイル: TypeParser.cs プロジェクト: ranganathsb/sharpDox
        private SDType CreateSDType(ITypeSymbol typeSymbol, bool isProjectStranger)
        {
            SDNamespace sdNamespace = null;

            if (typeSymbol is IArrayTypeSymbol)
            {
                sdNamespace = ParserOptions.SDRepository.GetNamespaceByIdentifier(((IArrayTypeSymbol)typeSymbol).ElementType.ContainingNamespace.GetIdentifier());
                sdNamespace = sdNamespace ?? new SDNamespace(((IArrayTypeSymbol)typeSymbol).ElementType.ContainingNamespace.GetIdentifier())
                {
                    IsProjectStranger = true
                };
            }
            else
            {
                sdNamespace = ParserOptions.SDRepository.GetNamespaceByIdentifier(typeSymbol.ContainingNamespace.GetIdentifier());
                sdNamespace = sdNamespace ?? new SDNamespace(typeSymbol.ContainingNamespace.GetIdentifier())
                {
                    IsProjectStranger = true
                };
            }

            var sdType = new SDType(typeSymbol.GetIdentifier(), typeSymbol.Name, sdNamespace)
            {
                Accessibility     = typeSymbol.DeclaredAccessibility.ToString().ToLower(),
                IsAbstract        = typeSymbol.IsAbstract,
                IsReferenceType   = typeSymbol.IsReferenceType,
                IsSealed          = typeSymbol.IsSealed,
                IsStatic          = typeSymbol.IsStatic,
                IsProjectStranger = isProjectStranger,
                Kind = typeSymbol.TypeKind.ToString().ToLower()
            };

            var declaringReferences = !isProjectStranger?typeSymbol.DeclaringSyntaxReferences.ToList() : new List <SyntaxReference>();

            foreach (var reference in declaringReferences)
            {
                var region = new SDRegion
                {
                    Start    = reference.Span.Start,
                    End      = reference.Span.End,
                    Filename = reference.SyntaxTree.FilePath
                };
                sdType.Regions.Add(region);
            }

            ParserOptions.SDRepository.AddType(sdType);

            return(sdType);
        }
コード例 #9
0
        internal void ParseMethodCalls(SDNamespace sdNamespace)
        {
            for (int i = 0; i < sdNamespace.Types.Count; i++)
            {
                foreach (var sdMethod in sdNamespace.Types[i].Methods)
                {
                    HandleOnItemParseStart(sdMethod.Name, i, sdNamespace.Types.Count);
                    var file          = _solution.GetFile(sdNamespace.Types[i].Region.Filename);
                    var methodAstNode = file.SyntaxTree.GetNodeContaining(
                        new TextLocation(sdMethod.Region.BeginLine, sdMethod.Region.BeginColumn),
                        new TextLocation(sdMethod.Region.EndLine, sdMethod.Region.EndColumn));

                    methodAstNode.AcceptVisitor(new MethodVisitor(_repository, sdMethod, sdNamespace.Types[i], file));
                }
            }
        }
コード例 #10
0
ファイル: TypeParser.cs プロジェクト: ranganathsb/sharpDox
        private SDType CreateSDType(INamedTypeSymbol typeSymbol, SDNamespace sdNamespace)
        {
            var sdType = new SDType(typeSymbol.GetIdentifier(), typeSymbol.Name, sdNamespace)
            {
                Accessibility     = typeSymbol.DeclaredAccessibility.ToString().ToLower(),
                IsAbstract        = typeSymbol.IsAbstract,
                IsReferenceType   = typeSymbol.IsReferenceType,
                IsSealed          = typeSymbol.IsSealed,
                IsStatic          = typeSymbol.IsStatic,
                IsProjectStranger = false,
                Kind = typeSymbol.TypeKind.ToString().ToLower()
            };

            sdType.Regions = GetRegions(typeSymbol);

            return(sdType);
        }
コード例 #11
0
        private void ParseNamespaces()
        {
            var pi = 0;

            for (int i = 0; i < _solution.Projects.Count; i++)
            {
                pi = i;
                var types = _solution.Projects[i].Compilation.MainAssembly.TopLevelTypeDefinitions.ToList();
                for (int j = 0; j < types.Count; j++)
                {
                    PostProgress(_sdBuildStrings.ParsingNamespace + ": " + types[j].Namespace, j, types.Count, pi, _solution.Projects.Count);

                    var sdNamespace = new SDNamespace(types[j].Namespace);
                    _repository.AddNamespace(sdNamespace);
                }
            }
        }
コード例 #12
0
        private SDType CreateSDType(ITypeSymbol typeSymbol, INamespaceSymbol namespaceSymbol)
        {
            var sdNamespace = new SDNamespace(namespaceSymbol.GetIdentifier())
            {
                IsProjectStranger = true
            };
            var sdType = new SDType(typeSymbol.GetIdentifier(), typeSymbol.Name, sdNamespace)
            {
                Accessibility     = typeSymbol.DeclaredAccessibility.ToString().ToLower(),
                IsAbstract        = typeSymbol.IsAbstract,
                IsReferenceType   = typeSymbol.IsReferenceType,
                IsSealed          = typeSymbol.IsSealed,
                IsStatic          = typeSymbol.IsStatic,
                IsProjectStranger = true,
                Kind = typeSymbol.TypeKind.ToString().ToLower()
            };

            return(sdType);
        }
コード例 #13
0
        private void InsertNamespaceOverview(SDNamespace sdNamespace, int navigationLevel)
        {
            _wordTemplater.AppendHeader(_wordStrings.Overview, navigationLevel);

            var headers = new List <string> {
                string.Empty,
                _wordStrings.Name,
                _wordStrings.Description
            };

            var rows = new List <List <string> >();

            foreach (var sdType in sdNamespace.Types)
            {
                var documentation = sdType.Documentations.GetElementOrDefault(_docLanguage);
                rows.Add(new List <string> {
                    string.Format("<img width=\"16\" src=\"{0}\"/>", Icons.GetIconPath("class", sdType.Accessibility)),
                    sdType.Name,
                    documentation != null ? documentation.Summary.ToString() : string.Empty
                });
            }

            _wordTemplater.AppendTable(headers, rows);
        }