示例#1
0
        private SDTokenList ParseContentTokens(XmlDocumentationElement xmlElement)
        {
            var content = new SDTokenList();

            foreach (XmlDocumentationElement element in xmlElement.Children)
            {
                var text = Regex.Replace(element.TextContent, "^[ ]{4}", "", RegexOptions.Multiline);

                if (element.IsTextNode)
                {
                    content.Add(new SDToken {
                        Role = SDTokenRole.Text, Text = text
                    });
                }
                else
                {
                    switch (element.Name.ToLower())
                    {
                    case "see":
                        var seeRef = GetSeeRef(element);
                        if (seeRef != null)
                        {
                            content.Add(seeRef);
                        }
                        break;

                    case "typeparamref":
                        content.Add(new SDToken {
                            Role = SDTokenRole.TypeParamRef, Text = element.GetAttribute("name")
                        });
                        break;

                    case "paramref":
                        content.Add(new SDToken {
                            Role = SDTokenRole.ParamRef, Text = element.GetAttribute("name")
                        });
                        break;

                    case "code":
                        content.Add(new SDCodeToken {
                            Text = text, IsInline = false
                        });
                        break;

                    case "c":
                        content.Add(new SDCodeToken {
                            Text = text, IsInline = true
                        });
                        break;

                    case "para":
                        content.Add(new SDToken {
                            Text = text, Role = SDTokenRole.Paragraph
                        });
                        break;
                    }
                }
            }
            return(content);
        }
 private void InsertDocumentationPart(string title, SDTokenList documentation)
 {
     if (documentation != null && documentation.Count > 0)
     {
         _wordTemplater.AppendParagraph(title, "MemberSubHeader");
         _wordTemplater.AppendMarkdown(documentation.ToMarkdown(), "MemberBody");
     }
 }
示例#3
0
 public SDDocumentation()
 {
     Summary = new SDTokenList();
     Remarks = new SDTokenList();
     Example = new SDTokenList();
     Returns = new SDTokenList();
     Exceptions = new Dictionary<string, SDTokenList>();
     Params = new Dictionary<string, SDTokenList>();
     TypeParams = new Dictionary<string, SDTokenList>();
 }
示例#4
0
 public SDDocumentation()
 {
     Summary    = new SDTokenList();
     Remarks    = new SDTokenList();
     Example    = new SDTokenList();
     Returns    = new Dictionary <string, SDTokenList>();
     SeeAlsos   = new SDTokenList();
     Exceptions = new Dictionary <string, SDTokenList>();
     Params     = new Dictionary <string, SDTokenList>();
     TypeParams = new Dictionary <string, SDTokenList>();
 }
示例#5
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;
        }
示例#6
0
        private SDTokenList ParseContentTokens(XmlDocumentationElement xmlElement)
        {
            var content = new SDTokenList();

            foreach (XmlDocumentationElement element in xmlElement.Children)
            {
                var text = Regex.Replace(element.TextContent, "^[ ]{4}", "", RegexOptions.Multiline);

                if (element.IsTextNode)
                {
                    content.Add(new SDToken { Role = SDTokenRole.Text, Text = text });
                }
                else
                {
                    switch (element.Name.ToLower())
                    {
                        case "see":
                            var seeRef = GetSeeRef(element);
                            if (seeRef != null)
                            {
                                content.Add(seeRef);
                            }
                            break;
                        case "typeparamref":
                            content.Add(new SDToken { Role = SDTokenRole.TypeParamRef, Text = element.GetAttribute("name") });
                            break;
                        case "paramref":
                            content.Add(new SDToken { Role = SDTokenRole.ParamRef, Text = element.GetAttribute("name") });
                            break;
                        case "code":
                            content.Add(new SDCodeToken { Text = text, IsInline = false });
                            break;
                        case "c":
                            content.Add(new SDCodeToken { Text = text, IsInline = true });
                            break;
                        case "para":
                            content.Add(new SDToken { Text = text, Role = SDTokenRole.Paragraph });
                            break;
                    }
                }
            }
            return content;
        }
示例#7
0
 private void InsertDocumentationPart(string title, SDTokenList documentation)
 {
     if (documentation != null && documentation.Count > 0)
     {
         _wordTemplater.AppendParagraph(title, "MemberSubHeader");
         _wordTemplater.AppendMarkdown(documentation.ToMarkdown(), "MemberBody");
     }
 }
示例#8
0
        private SDTokenList ParseContentTokens(XmlDocumentationElement xmlElement)
		{
            var content = new SDTokenList();

			foreach (XmlDocumentationElement element in xmlElement.Children)
			{
                var text = Regex.Replace(element.TextContent, "^[ ]{4}", "", RegexOptions.Multiline);

			    if (element.IsTextNode)
			    {
                    content.Add(new SDToken { Role = SDTokenRole.Text, Text = text });
			    }
			    else
			    {
			        switch (element.Name.ToLower())
			        {
			            case "see":
			                if (element.ReferencedEntity != null)
			                {
			                    var identifier = element.ReferencedEntity.DeclaringType != null
                                                        ? element.ReferencedEntity.DeclaringType.GetIdentifier()
			                                            : string.Empty;
			                    content.Add(new SDSeeToken
			                        {
			                            Name = element.ReferencedEntity.Name,
			                            Namespace = element.ReferencedEntity.Namespace,
                                        DeclaringType = identifier != string.Empty ? _sdRepository.GetTypeByIdentifier(identifier) : null,
                                        Text = element.ReferencedEntity.Name
			                        });
			                }
			                else
			                {
			                    content.Add(new SDSeeToken {Name = element.GetAttribute("cref")});
			                }
			                break;
			            case "paramref":
			                content.Add(new SDToken {Role = SDTokenRole.ParamRef, Text = element.GetAttribute("name")});
			                break;
			            case "code":
                            content.Add(new SDCodeToken { Text = text, IsInline = false });
			                break;
			            case "c":
                            content.Add(new SDCodeToken { Text = text, IsInline = true });
			                break;
			            case "para":
                            content.Add(new SDToken { Text = text, Role = SDTokenRole.Paragraph });
			                break;
			        }
			    }
			}
			return content;
		}
示例#9
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().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);
        }
示例#10
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().Trim()
                    });
                }

                var nodeElement = element as XElement;
                if(nodeElement != null)
                {
                    switch (nodeElement.Name.LocalName.ToLower())
                    {
                        case "see":
                            var seeRef = GetSeeRef(nodeElement);
                            if (seeRef != null)
                            {
                                content.Add(seeRef);
                            }
                            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;
        }
示例#11
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)
                {
                    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);
        }
示例#12
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);
        }