private static String serialize(Span span, String content, DocumentLinkResolver linkResolver, HtmlSerializer htmlSerializer) { if (htmlSerializer != null) { String customHtml = htmlSerializer.Serialize(span, content); if (customHtml != null) { return(customHtml); } } if (span is Strong) { return("<strong>" + content + "</strong>"); } if (span is Em) { return("<em>" + content + "</em>"); } if (span is LabelSpan) { return("<span class=\"" + ((LabelSpan)span).Label + "\">" + content + "</span>"); } if (span is Hyperlink) { Hyperlink hyperlink = (Hyperlink)span; if (hyperlink.Link is WebLink) { WebLink webLink = (WebLink)hyperlink.Link; return("<a href=\"" + webLink.Url + "\">" + content + "</a>"); } else if (hyperlink.Link is FileLink) { FileLink fileLink = (FileLink)hyperlink.Link; return("<a href=\"" + fileLink.Url + "\">" + content + "</a>"); } else if (hyperlink.Link is ImageLink) { ImageLink imageLink = (ImageLink)hyperlink.Link; return("<a href=\"" + imageLink.Url + "\">" + content + "</a>"); } else if (hyperlink.Link is DocumentLink) { DocumentLink documentLink = (DocumentLink)hyperlink.Link; String url = linkResolver.Resolve(documentLink); return("<a " + (linkResolver.GetTitle(documentLink) == null ? "" : "title=\"" + linkResolver.GetTitle(documentLink) + "\" ") + "href=\"" + url + "\">" + content + "</a>"); } } return("<span>" + content + "</span>"); }
public String asHtml(Block block, DocumentLinkResolver linkResolver, HtmlSerializer htmlSerializer) { String content = ""; if (block is StructuredText.Heading) { StructuredText.Heading heading = (StructuredText.Heading)block; content = insertSpans(heading.Text, heading.Spans, linkResolver, htmlSerializer); } else if (block is StructuredText.Paragraph) { StructuredText.Paragraph paragraph = (StructuredText.Paragraph)block; content = insertSpans(paragraph.Text, paragraph.Spans, linkResolver, htmlSerializer); } else if (block is StructuredText.Preformatted) { StructuredText.Preformatted paragraph = (StructuredText.Preformatted)block; content = insertSpans(paragraph.Text, paragraph.Spans, linkResolver, htmlSerializer); } else if (block is StructuredText.ListItem) { StructuredText.ListItem listItem = (StructuredText.ListItem)block; content = insertSpans(listItem.Text, listItem.Spans, linkResolver, htmlSerializer); } if (htmlSerializer != null) { String customHtml = htmlSerializer.Serialize(block, content); if (customHtml != null) { return(customHtml); } } String classCode = block.Label == null ? "" : (" class=\"" + block.Label + "\""); if (block is StructuredText.Heading) { StructuredText.Heading heading = (StructuredText.Heading)block; return("<h" + heading.Level + classCode + ">" + content + "</h" + heading.Level + ">"); } else if (block is StructuredText.Paragraph) { return("<p" + classCode + ">" + content + "</p>"); } else if (block is StructuredText.Preformatted) { return("<pre" + classCode + ">" + content + "</pre>"); } else if (block is StructuredText.ListItem) { return("<li" + classCode + ">" + content + "</li>"); } else if (block is StructuredText.Image) { StructuredText.Image image = (StructuredText.Image)block; String labelCode = block.Label == null ? "" : (" " + block.Label); return("<p class=\"block-img" + labelCode + "\">" + image.View.AsHtml(linkResolver) + "</p>"); } else if (block is StructuredText.Embed) { StructuredText.Embed embed = (StructuredText.Embed)block; return(embed.Obj.AsHtml()); } return(""); }
private static String serialize(Span span, String content, DocumentLinkResolver linkResolver, HtmlSerializer htmlSerializer) { if (htmlSerializer != null) { String customHtml = htmlSerializer.Serialize(span, content); if (customHtml != null) { return customHtml; } } if (span is Strong) { return "<strong>" + content + "</strong>"; } if (span is Em) { return "<em>" + content + "</em>"; } if (span is LabelSpan) { return "<span class=\"" + ((LabelSpan)span).Label + "\">" + content + "</span>"; } if (span is Hyperlink) { Hyperlink hyperlink = (Hyperlink)span; if(hyperlink.Link is WebLink) { WebLink webLink = (WebLink)hyperlink.Link; return "<a href=\""+ webLink.Url + "\">" + content + "</a>"; } else if(hyperlink.Link is FileLink) { FileLink fileLink = (FileLink)hyperlink.Link; return "<a href=\"" + fileLink.Url + "\">" + content + "</a>"; } else if(hyperlink.Link is ImageLink) { ImageLink imageLink = (ImageLink)hyperlink.Link; return "<a href=\""+ imageLink.Url + "\">" + content + "</a>"; } else if(hyperlink.Link is DocumentLink) { DocumentLink documentLink = (DocumentLink)hyperlink.Link; String url = linkResolver.Resolve(documentLink); return "<a " + (linkResolver.GetTitle(documentLink) == null ? "" : "title=\"" + linkResolver.GetTitle(documentLink) + "\" ") + "href=\""+ url+ "\">" + content + "</a>"; } } return "<span>" + content + "</span>"; }
public void SaveToFileTest() { var document = new Document() .Html .AddAttribute(a => a.Lang).Setup(l => l.SetValue("en")) .AddAttribute(a => a.ItemScope).Setup(@is => @is.SetValue(true)) .AddAttribute(a => a.ItemType).Setup(it => it.SetValue("https://schema.org")) .Document.Head .AddChild(e => e.Link) .AddAttribute(a => a.Rel).Setup(r => r.SetValue("main.css")) .Document.Body .AddChild(e => e.Header) .AddChild(e => e.Div) .AddAttribute(d => d.Class).Setup(cls => cls.SetValue("main_container")) .AddCustomChild("custom_tag") .AddAttribute(ct => ct.AccessKey).Setup(ak => ak.SetValue("custom_key")) .AddCustomAttribute("custom_attribute", "custom_attribute") .AddContent("Text in custom element") .Parent .AddChild(i => i.Img) .Parent.Parent.Parent .AddChild(e => e.Footer) .Document ; using (var fileStream = new FileStream(file, FileMode.Create, FileAccess.Write)) { using (var streamWriter = new StreamWriter(fileStream)) { var serializer = new HtmlSerializer(document); serializer.Serialize(streamWriter); streamWriter.Flush(); streamWriter.Close(); } } var testHtmlText = @"<!DOCTYPE html> <html lang=""en"" itemscope itemtype=""https://schema.org""> <head> <link rel=""main.css""/> </head> <body> <header> <div class=""main_container""> <custom_tag accesskey=""custom_key"" custom_attribute=""custom_attribute"">Text in custom element</custom_tag> <img/> </div> </header> <footer/> </body> </html>"; var result = string.Empty; using (var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read)) { using (var streamReader = new StreamReader(fileStream)) { result = streamReader.ReadToEnd(); streamReader.Close(); } } Assert.AreEqual(result, testHtmlText); }
public String asHtml(Block block, DocumentLinkResolver linkResolver, HtmlSerializer htmlSerializer) { String content = ""; if(block is StructuredText.Heading) { StructuredText.Heading heading = (StructuredText.Heading)block; content = insertSpans(heading.Text, heading.Spans, linkResolver, htmlSerializer); } else if(block is StructuredText.Paragraph) { StructuredText.Paragraph paragraph = (StructuredText.Paragraph)block; content = insertSpans(paragraph.Text, paragraph.Spans, linkResolver, htmlSerializer); } else if(block is StructuredText.Preformatted) { StructuredText.Preformatted paragraph = (StructuredText.Preformatted)block; content = insertSpans(paragraph.Text, paragraph.Spans, linkResolver, htmlSerializer); } else if(block is StructuredText.ListItem) { StructuredText.ListItem listItem = (StructuredText.ListItem)block; content = insertSpans(listItem.Text, listItem.Spans, linkResolver, htmlSerializer); } if (htmlSerializer != null) { String customHtml = htmlSerializer.Serialize(block, content); if (customHtml != null) { return customHtml; } } String classCode = block.Label == null ? "" : (" class=\"" + block.Label + "\""); if(block is StructuredText.Heading) { StructuredText.Heading heading = (StructuredText.Heading)block; return ("<h" + heading.Level + classCode + ">" + content + "</h" + heading.Level + ">"); } else if(block is StructuredText.Paragraph) { return ("<p" + classCode + ">" + content + "</p>"); } else if(block is StructuredText.Preformatted) { return ("<pre" + classCode + ">" + content + "</pre>"); } else if(block is StructuredText.ListItem) { return ("<li" + classCode + ">" + content + "</li>"); } else if(block is StructuredText.Image) { StructuredText.Image image = (StructuredText.Image)block; String labelCode = block.Label == null ? "" : (" " + block.Label); return ("<p class=\"block-img" + labelCode + "\">" + image.View.AsHtml(linkResolver) + "</p>"); } else if(block is StructuredText.Embed) { StructuredText.Embed embed = (StructuredText.Embed)block; return (embed.Obj.AsHtml()); } return ""; }