Inheritance: SharpDox.Model.Documentation.Token.SDToken
Beispiel #1
0
        private SDToken GetSeeRef(XElement xmlElement)
        {
            try
            {
                var sdToken = new SDSeeToken();

                /*if (xmlElement.ReferencedEntity != null)
                {
                    var identifier = xmlElement.ReferencedEntity.DeclaringType != null
                                            ? xmlElement.ReferencedEntity.DeclaringType.GetIdentifier()
                                            : string.Empty;

                    sdToken.Name = xmlElement.ReferencedEntity.Name;
                    sdToken.Namespace = xmlElement.ReferencedEntity.Namespace;
                    sdToken.DeclaringType = identifier;
                    sdToken.Text = xmlElement.ReferencedEntity.Name;
                }
                else
                {
                    sdToken.Name = xmlElement.GetAttribute("cref");
                }*/

                return sdToken;
            }
            catch (Exception)
            {
                return null;
            }
        }
Beispiel #2
0
        private SDTokenList ParseContentTokens(XElement xmlElement, bool multilang)
        {
            var content = new SDTokenList();

            foreach (var element in xmlElement.Nodes())
            {
                var textElement = element as XText;
                if(textElement != null)
                {
                    content.Add(new SDToken
                    {
                        Role = SDTokenRole.Text,
                        Text = element.ToString()
                    });
                }

                var nodeElement = element as XElement;
                if(nodeElement != null)
                {
                    switch (nodeElement.Name.LocalName.ToLower())
                    {
                        case "see":
                            var seeToken = new SDSeeToken(nodeElement.ToString());
                            _seeTokens.Add(seeToken);
                            content.Add(seeToken);
                            break;
                        case "typeparamref":
                            content.Add(new SDToken { Role = SDTokenRole.TypeParamRef, Text = nodeElement.Attribute("name")?.Value });
                            break;
                        case "paramref":
                            content.Add(new SDToken { Role = SDTokenRole.ParamRef, Text = nodeElement.Attribute("name")?.Value });
                            break;
                        case "code":
                            var workspace = MSBuildWorkspace.Create();
                            var formattedResult = Formatter.Format(CSharpSyntaxTree.ParseText(nodeElement.Value, CSharpParseOptions.Default).GetRoot(), workspace);
                            content.Add(new SDCodeToken { Text = formattedResult.ToString(), IsInline = false });
                            break;
                        case "c":
                            content.Add(new SDCodeToken { Text = nodeElement.Value, IsInline = true });
                            break;
                        case "para":
                            content.Add(new SDToken { Text = nodeElement.Value, Role = SDTokenRole.Paragraph });
                            break;
                    }
                }
            }
            return content;
        }
Beispiel #3
0
        private SDDocumentation ParseDocumentation(IEnumerable<XElement> docElements, bool multilang = false)
        {
            var sdDocumentation = new SDDocumentation();

            foreach (var child in docElements)
            {
                switch (child.Name.LocalName.ToLower())
                {
                    case "typeparam":
                        var typeparamKey = child.Attribute("name")?.Value ?? "typeparam";
                        if (!sdDocumentation.TypeParams.ContainsKey(typeparamKey))
                            sdDocumentation.TypeParams.Add(typeparamKey, ParseContentTokens(child, multilang));
                        break;
                    case "param":
                        var paramKey = child.Attribute("name")?.Value ?? "param";
                        if (!sdDocumentation.Params.ContainsKey(paramKey))
                            sdDocumentation.Params.Add(paramKey, ParseContentTokens(child, multilang));
                        break;
                    case "exception":
                        var exKey = child.Attribute("cref")?.Value ?? "exception";
                        if (!sdDocumentation.Exceptions.ContainsKey(exKey))
                            sdDocumentation.Exceptions.Add(exKey, ParseContentTokens(child, multilang));
                        break;
                    case "summary":
                        sdDocumentation.Summary = ParseContentTokens(child, multilang);
                        break;
                    case "remarks":
                        sdDocumentation.Remarks = ParseContentTokens(child, multilang);
                        break;
                    case "example":
                        sdDocumentation.Example = ParseContentTokens(child, multilang);
                        break;
                    case "returns":
                        AddResultsSection(sdDocumentation.Returns, child, multilang);
                        break;
                    case "seealso":
                        var seeToken = new SDSeeToken(child.ToString());
                        _seeTokens.Add(seeToken);
                        sdDocumentation.SeeAlsos.Add(seeToken);
                        break;
                }
            }

            return sdDocumentation;
        }