ParseDocumentation() приватный Метод

private ParseDocumentation ( IEnumerable docElements, bool multilang = false ) : SharpDox.Model.Documentation.SDDocumentation
docElements IEnumerable
multilang bool
Результат SharpDox.Model.Documentation.SDDocumentation
Пример #1
0
        private SDField GetParsedField(IFieldSymbol field)
        {
            var syntaxReference = field.DeclaringSyntaxReferences.Any() ? field.DeclaringSyntaxReferences.Single() : null;
            var sdField         = new SDField(field.GetIdentifier())
            {
                Name          = field.Name,
                DeclaringType = _typeRefParser.GetParsedTypeReference(field.ContainingType),
                Accessibility = field.DeclaredAccessibility.ToString().ToLower(),
                ReturnType    = _typeRefParser.GetParsedTypeReference(field.Type),
                ConstantValue = field.ConstantValue != null?field.ConstantValue.ToString() : string.Empty,
                                    IsConst        = field.IsConst,
                                    IsReadonly     = field.IsReadOnly,
                                    Documentations = DocumentationParser.ParseDocumentation(field),
                                    Region         = syntaxReference != null ? new SDRegion
                {
                    Start     = syntaxReference.Span.Start,
                    End       = syntaxReference.Span.End,
                    StartLine = syntaxReference.SyntaxTree.GetLineSpan(syntaxReference.Span).StartLinePosition.Line + 1,
                    EndLine   = syntaxReference.SyntaxTree.GetLineSpan(syntaxReference.Span).EndLinePosition.Line + 1,
                    FilePath  = syntaxReference.SyntaxTree.FilePath,
                    Filename  = Path.GetFileName(syntaxReference.SyntaxTree.FilePath)
                }

                  : null
            };

            ParserOptions.SDRepository.AddMember(sdField);
            return(sdField);
        }
Пример #2
0
        private SDProperty GetParsedProperty(IPropertySymbol property)
        {
            var syntaxReference = property.DeclaringSyntaxReferences.Any() ? property.DeclaringSyntaxReferences.Single() : null;
            var sdProperty      = new SDProperty(property.GetIdentifier())
            {
                Name           = property.Name,
                DeclaringType  = _typeRefParser.GetParsedTypeReference(property.ContainingType),
                Accessibility  = property.DeclaredAccessibility.ToString().ToLower(),
                ReturnType     = _typeRefParser.GetParsedTypeReference(property.Type),
                CanGet         = property.GetMethod != null,
                CanSet         = property.SetMethod != null,
                IsAbstract     = property.IsAbstract,
                IsVirtual      = property.IsVirtual,
                IsOverride     = property.IsOverride,
                Documentations = DocumentationParser.ParseDocumentation(property),
                Region         = syntaxReference != null ? new SDRegion
                {
                    Start     = syntaxReference.Span.Start,
                    End       = syntaxReference.Span.End,
                    StartLine = syntaxReference.SyntaxTree.GetLineSpan(syntaxReference.Span).StartLinePosition.Line + 1,
                    EndLine   = syntaxReference.SyntaxTree.GetLineSpan(syntaxReference.Span).EndLinePosition.Line + 1,
                    FilePath  = syntaxReference.SyntaxTree.FilePath,
                    Filename  = Path.GetFileName(syntaxReference.SyntaxTree.FilePath)
                } : null
            };

            ParserOptions.SDRepository.AddMember(sdProperty);
            return(sdProperty);
        }
Пример #3
0
        private SDMethod GetParsedMethod(IMethodSymbol method, bool isCtor)
        {
            var sdMethod = ParserOptions.SDRepository.GetMethodByIdentifier(method.GetIdentifier());

            if (sdMethod != null)
            {
                return(sdMethod);
            }

            var returnType      = _typeRefParser.GetParsedTypeReference(method.ReturnType);
            var syntaxReference = method.DeclaringSyntaxReferences.Any() ? method.DeclaringSyntaxReferences.Single() : null;

            sdMethod = new SDMethod(method.GetIdentifier(), isCtor ? method.ContainingType.Name : method.Name)
            {
                Namespace      = method.ContainingNamespace.GetIdentifier(),
                DeclaringType  = _typeRefParser.GetParsedTypeReference(method.ContainingType),
                ReturnType     = returnType,
                IsCtor         = isCtor,
                Accessibility  = method.DeclaredAccessibility.ToString().ToLower(),
                IsAbstract     = method.IsAbstract,
                IsOverride     = method.IsOverride,
                IsPrivate      = method.DeclaredAccessibility == Accessibility.Private,
                IsProtected    = method.DeclaredAccessibility == Accessibility.Protected,
                IsPublic       = method.DeclaredAccessibility == Accessibility.Public,
                IsSealed       = method.IsSealed,
                IsVirtual      = method.IsVirtual,
                IsStatic       = method.IsStatic,
                Documentations = DocumentationParser.ParseDocumentation(method),
                Region         = syntaxReference != null ? new SDRegion
                {
                    Start     = syntaxReference.Span.Start,
                    End       = syntaxReference.Span.End,
                    StartLine = syntaxReference.SyntaxTree.GetLineSpan(syntaxReference.Span).StartLinePosition.Line + 1,
                    EndLine   = syntaxReference.SyntaxTree.GetLineSpan(syntaxReference.Span).EndLinePosition.Line + 1,
                    FilePath  = syntaxReference.SyntaxTree.FilePath,
                    Filename  = Path.GetFileName(syntaxReference.SyntaxTree.FilePath)
                } : null
            };

            sdMethod.TypeParameters = _typeParameterParser.ParseTypeParameters(method.TypeParameters);

            foreach (var parameter in method.Parameters)
            {
                sdMethod.Parameters.Add(new SDParameter
                {
                    Name          = parameter.Name,
                    ParamType     = _typeRefParser.GetParsedTypeReference(parameter.Type),
                    IsOptional    = parameter.IsOptional,
                    IsConst       = parameter.HasExplicitDefaultValue,
                    ConstantValue = parameter.HasExplicitDefaultValue ? parameter.ExplicitDefaultValue?.ToString() ?? "null" : null,
                    IsRef         = parameter.RefKind == RefKind.Ref,
                    IsOut         = parameter.RefKind == RefKind.Out
                });
            }

            ParserOptions.SDRepository.AddMethod(sdMethod);
            return(sdMethod);
        }
Пример #4
0
        private SDEvent GetParsedEvent(IEventSymbol eve)
        {
            var sdEvent = new SDEvent(eve.GetIdentifier())
            {
                Name           = eve.Name,
                DeclaringType  = _typeRefParser.GetParsedTypeReference(eve.ContainingType),
                Accessibility  = eve.DeclaredAccessibility.ToString().ToLower(),
                Documentations = DocumentationParser.ParseDocumentation(eve)
            };

            ParserOptions.SDRepository.AddMember(sdEvent);
            return(sdEvent);
        }
Пример #5
0
        private SDField GetParsedField(IFieldSymbol field)
        {
            var sdField = new SDField(field.GetIdentifier())
            {
                Name          = field.Name,
                DeclaringType = _typeRefParser.GetParsedTypeReference(field.ContainingType),
                Accessibility = field.DeclaredAccessibility.ToString().ToLower(),
                ReturnType    = _typeRefParser.GetParsedTypeReference(field.Type),
                ConstantValue = field.ConstantValue != null?field.ConstantValue.ToString() : string.Empty,
                                    IsConst        = field.IsConst,
                                    IsReadonly     = field.IsReadOnly,
                                    Documentations = DocumentationParser.ParseDocumentation(field)
            };

            ParserOptions.SDRepository.AddMember(sdField);
            return(sdField);
        }
Пример #6
0
        private SDProperty GetParsedProperty(IPropertySymbol property)
        {
            var sdProperty = new SDProperty(property.GetIdentifier())
            {
                Name           = property.Name,
                DeclaringType  = _typeRefParser.GetParsedTypeReference(property.ContainingType),
                Accessibility  = property.DeclaredAccessibility.ToString().ToLower(),
                ReturnType     = _typeRefParser.GetParsedTypeReference(property.Type),
                CanGet         = property.GetMethod != null,
                CanSet         = property.SetMethod != null,
                IsAbstract     = property.IsAbstract,
                IsVirtual      = property.IsVirtual,
                IsOverride     = property.IsOverride,
                Documentations = DocumentationParser.ParseDocumentation(property)
            };

            ParserOptions.SDRepository.AddMember(sdProperty);
            return(sdProperty);
        }
Пример #7
0
        private void ParseTheProjectType(INamedTypeSymbol typeSymbol)
        {
            var sdNamespace = ParserOptions.SDRepository.GetNamespaceByIdentifier(typeSymbol.ContainingNamespace.GetIdentifier());
            var sdType      = ParserOptions.SDRepository.GetTypeByIdentifier(typeSymbol.GetIdentifier());

            if (sdType == null)
            {
                sdType = CreateSDType(typeSymbol, sdNamespace);
                sdNamespace.Types.Add(sdType);
                ParserOptions.SDRepository.AddType(sdType);
            }
            else // already parsed as stranger
            {
                sdType.Namespace         = ParserOptions.SDRepository.GetNamespaceByIdentifier(typeSymbol.ContainingNamespace.GetIdentifier());
                sdType.Regions           = GetRegions(typeSymbol);
                sdType.IsProjectStranger = false;

                if (!sdNamespace.Types.Contains(sdType))
                {
                    sdNamespace.Types.Add(sdType);
                }
            }

            sdType.Documentations = DocumentationParser.ParseDocumentation(typeSymbol);
            AddParsedBaseType(sdType, typeSymbol.BaseType);
            AddParsedInterfaces(sdType, typeSymbol.Interfaces);
            AddParsedNestedTypes(sdType, typeSymbol.GetTypeMembers());

            _propertyParser.ParseProperties(sdType, typeSymbol);
            _fieldParser.ParseFields(sdType, typeSymbol);
            _methodParser.ParseConstructors(sdType, typeSymbol);
            _methodParser.ParseMethods(sdType, typeSymbol);
            _eventParser.ParseEvents(sdType, typeSymbol);

            sdType.TypeParameters = _typeParameterParser.ParseTypeParameters(typeSymbol.TypeParameters);
            foreach (var typeArgument in typeSymbol.TypeArguments)
            {
                sdType.TypeArguments.Add(_typeRefParser.GetParsedTypeReference(typeArgument));
            }
        }
Пример #8
0
        private SDEvent GetParsedEvent(IEventSymbol eve)
        {
            var syntaxReference = eve.DeclaringSyntaxReferences.Any() ? eve.DeclaringSyntaxReferences.Single() : null;
            var sdEvent         = new SDEvent(eve.GetIdentifier())
            {
                Name           = eve.Name,
                DeclaringType  = _typeRefParser.GetParsedTypeReference(eve.ContainingType),
                Accessibility  = eve.DeclaredAccessibility.ToString().ToLower(),
                Documentations = DocumentationParser.ParseDocumentation(eve),
                Region         = syntaxReference != null ? new SDRegion
                {
                    Start     = syntaxReference.Span.Start,
                    StartLine = syntaxReference.SyntaxTree.GetLineSpan(syntaxReference.Span).StartLinePosition.Line + 1,
                    EndLine   = syntaxReference.SyntaxTree.GetLineSpan(syntaxReference.Span).EndLinePosition.Line + 1,
                    End       = syntaxReference.Span.End,
                    FilePath  = syntaxReference.SyntaxTree.FilePath,
                    Filename  = Path.GetFileName(syntaxReference.SyntaxTree.FilePath)
                } : null
            };

            ParserOptions.SDRepository.AddMember(sdEvent);
            return(sdEvent);
        }