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 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 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; }
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; }
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) { 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; }
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); }
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); }