Exemple #1
0
        private SDToken GetSeeRef(XmlDocumentationElement 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);
            }
        }
Exemple #2
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);
            }
        }
        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);
        }
        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().Trim()
                    });
                }

                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":
                        content.Add(new SDCodeToken {
                            Text = nodeElement.Value, 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);
        }
        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)
                {
                    var newLines = new[] { "\r\n", "\n" };
                    var text     = element.ToString();

                    while (true)
                    {
                        foreach (var newLine in newLines)
                        {
                            if (text.StartsWith(newLine))
                            {
                                text = text.Substring(newLine.Length);
                            }

                            if (text.EndsWith(newLine))
                            {
                                text = text.Substring(0, text.Length - newLine.Length);
                            }
                        }

                        text = text.Trim();

                        var shouldBreak = true;

                        foreach (var newLine in newLines)
                        {
                            if (text.StartsWith(newLine) || text.EndsWith(newLine))
                            {
                                shouldBreak = false;
                                break;
                            }
                        }

                        if (shouldBreak)
                        {
                            // Replace single newline occurrences by a space (this is just a newline in the docs, not a new paragraph)
                            foreach (var newLine in newLines)
                            {
                                text = text.Replace(newLine, " ");
                            }

                            // Remove duplicate spaces that were used for indentation
                            while (text.Contains("  "))
                            {
                                text = text.Replace("  ", " ");
                            }

                            break;
                        }
                    }

                    content.Add(new SDToken
                    {
                        Role = SDTokenRole.Text,
                        Text = text
                    });
                }

                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);
        }
Exemple #6
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);
        }