private ParseDocumentation ( IEnumerable |
||
docElements | IEnumerable |
|
multilang | bool | |
Результат | SharpDox.Model.Documentation.SDDocumentation |
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); }
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); }
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); }
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); }
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); }
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); }
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)); } }
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); }