Beispiel #1
0
        public void AddPage(string html, string webRoot, string pagePath)
        {
            this.htmlPage = html;
            this.webRoot  = webRoot;
            //this.pagePath = pagePath;

            var parser = new AngleSharp.Parser.Html.HtmlParser();
            var doc    = parser.Parse(html);
            var images = doc.Images
                         .Where(x => x.HasAttribute("src"));
            var styles = doc.GetElementsByTagName("link")
                         .Where(l => l.Attributes["rel"].Value.Trim().ToLower() == "stylesheet")
                         .Where(c => c.HasAttribute("href"));
            var scripts = doc.GetElementsByTagName("script")
                          .Where(x => x.HasAttribute("src"));

            Assets.AddSerializedAssets(images, "src");
            Assets.AddSerializedAssets(scripts, "src");
            StyleAssets.AddSerializedAssets(styles, "href");

            var newHtml = doc.ToHtml(new HtmlMarkupFormatter());
            var entry   = zipArchive.CreateEntry("index.html", CompressionLevel.Fastest);

            using (StreamWriter writer = new StreamWriter(entry.Open()))
            {
                try
                {
                    writer.Write(newHtml);
                }
                catch (Exception ex)
                {
                    throw;
                }
            }
            foreach (var serialStyle in this.StyleAssets.Assets)
            {
                //if (!serialStyle.Zipped)
                {
                    var style =
                        Zipper.GetStringAsset(serialStyle.OriginalPath, mapPathResolver, webRoot, pagePath);
                    if (!string.IsNullOrEmpty(style))
                    {
                        //var sentry = zipArchive.CreateEntry(serialStyle.Value, CompressionLevel.Fastest);
                        //using (StreamWriter writer = new StreamWriter(sentry.Open()))
                        //{
                        //    writer.Write(style);
                        //}
                        //doneAssets.Add(serialStyle.Value);
                    }
                }
            }
            //foreach (var serialAsset in serialAssets)
            //{
            //    if (!doneAssets.Contains(serialAsset.Value))
            //    {
            //        zipArchive.AddBinaryAssetToArchive(
            //            serialAsset.Value, serialAsset.Key, mapPathResolver, webRoot, pagePath);
            //        doneAssets.Add(serialAsset.Value);
            //    }
            //}
        }