Esempio n. 1
0
 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>");
 }
Esempio n. 2
0
            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("");
            }
Esempio n. 3
0
 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>";
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
            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 "";
            }