示例#1
0
        private async Task <IFile> CompilePage(IPage page, ISite site, ILocation loc)
        {
            m_Logger.LogInformation($"Compiling page: '{loc.ToId()}'", true);

            var url = loc.ToUrl();

            var content = await m_ContentTransformer.Transform(page.RawContent);

            var layout = page.Layout;

            if (layout != null)
            {
                content = await m_LayoutParser.InsertContent(layout, content, site, page, url);
            }

            content = await m_IncludesHandler.ResolveAll(content, site, page, url);

            var contentStrBuilder = new StringBuilder(content);

            await m_Ext.WritePageContent(contentStrBuilder, page.Data, url);

            content = contentStrBuilder.ToString();

            if (!string.IsNullOrEmpty(site.BaseUrl))
            {
                var baseUrl = LocationExtension.URL_SEP + site.BaseUrl.TrimStart(LocationExtension.URL_SEP).TrimEnd(LocationExtension.URL_SEP);

                content = SetBaseUrl(content, baseUrl);
            }

            return(new File(loc, ContentExtension.ToByteArray(content), page.Id));
        }