@@ -71,40 +71,40 @@ public async Task<SiteContext> BuildAsync(CancellationToken ct = default)
7171 // 3. OnBuildStart hooks.
7272 _log . LogDebug ( "Running OnBuildStart hooks ({Count})" , host . BuildHooks . Count ) ;
7373 using ( Measure ( "3. OnBuildStart hooks" ) )
74- foreach ( var hook in host . BuildHooks )
75- {
76- _log . LogTrace ( "OnBuildStart: {Hook}" , hook . GetType ( ) . Name ) ;
77- using ( Measure ( PluginLabel ( hook ) ) )
78- await hook . OnBuildStartAsync ( site , ct ) ;
79- }
74+ foreach ( var hook in host . BuildHooks )
75+ {
76+ _log . LogTrace ( "OnBuildStart: {Hook}" , hook . GetType ( ) . Name ) ;
77+ using ( Measure ( PluginLabel ( hook ) ) )
78+ await hook . OnBuildStartAsync ( site , ct ) ;
79+ }
8080
8181 // 4. Content generators (blog lists, tags, archives).
8282 var generatedCount = 0 ;
8383 using ( Measure ( "4. content generators" ) )
84- foreach ( var generator in host . ContentGenerators )
85- using ( Measure ( PluginLabel ( generator ) ) )
86- await foreach ( var generated in generator . GenerateAsync ( site , ct ) )
87- {
88- site . Pages . Add ( generated ) ;
89- generatedCount ++ ;
90- _log . LogTrace ( "Generated page {Url} by {Generator}" , generated . Url , generator . GetType ( ) . Name ) ;
91- }
84+ foreach ( var generator in host . ContentGenerators )
85+ using ( Measure ( PluginLabel ( generator ) ) )
86+ await foreach ( var generated in generator . GenerateAsync ( site , ct ) )
87+ {
88+ site . Pages . Add ( generated ) ;
89+ generatedCount ++ ;
90+ _log . LogTrace ( "Generated page {Url} by {Generator}" , generated . Url , generator . GetType ( ) . Name ) ;
91+ }
9292 _log . LogDebug ( "Content generators produced {Count} pages" , generatedCount ) ;
9393
9494 // 5. Preprocess markdown (snippets, abbreviations, macros).
9595 _log . LogDebug ( "Preprocessing {Count} pages with {Preprocessors} preprocessor(s)" , site . Pages . Count , host . Preprocessors . Count ) ;
9696 using ( Measure ( "5. preprocess markdown" ) )
97- foreach ( var page in site . Pages )
98- {
99- var md = page . RawMarkdown ;
100- foreach ( var pre in host . Preprocessors )
97+ foreach ( var page in site . Pages )
10198 {
102- if ( pre is IPlugin p && ! PagePluginGate . IsEnabled ( page , p . Name ) ) continue ;
103- using ( Measure ( PluginLabel ( pre ) ) )
104- md = await pre . ProcessAsync ( page , md , site , ct ) ;
99+ var md = page . RawMarkdown ;
100+ foreach ( var pre in host . Preprocessors )
101+ {
102+ if ( pre is IPlugin p && ! PagePluginGate . IsEnabled ( page , p . Name ) ) continue ;
103+ using ( Measure ( PluginLabel ( pre ) ) )
104+ md = await pre . ProcessAsync ( page , md , site , ct ) ;
105+ }
106+ page . ProcessedMarkdown = md ;
105107 }
106- page . ProcessedMarkdown = md ;
107- }
108108
109109 // 6. Parse + render markdown in parallel (one pipeline per thread; Markdig state is not shared-safe).
110110 // A content-hash cache reuses the (pure) render artifacts for pages whose markdown,
@@ -155,24 +155,24 @@ public async Task<SiteContext> BuildAsync(CancellationToken ct = default)
155155 var minify = config . Optimize . MinifyHtml ;
156156 var webpWrap = config . Optimize . ConvertImagesToWebp ;
157157 using ( Measure ( "8. template render" ) )
158- Parallel . ForEach ( site . Pages , new ParallelOptions { CancellationToken = ct } , page =>
159- {
160- var html = PageRenderer . Render ( templateEngine , site , page , host . Assets ) ;
161- if ( webpWrap ) html = Optimization . WebpHtmlRewriter . Rewrite ( html ) ;
162- if ( minify ) html = Optimization . HtmlMinifier . Minify ( html ) ;
163- rendered . Add ( ( page . OutputPath , html ) ) ;
164- renderedPages . Add ( new Validation . RenderedPage ( page , html ) ) ;
165- } ) ;
158+ Parallel . ForEach ( site . Pages , new ParallelOptions { CancellationToken = ct } , page =>
159+ {
160+ var html = PageRenderer . Render ( templateEngine , site , page , host . Assets ) ;
161+ if ( webpWrap ) html = Optimization . WebpHtmlRewriter . Rewrite ( html ) ;
162+ if ( minify ) html = Optimization . HtmlMinifier . Minify ( html ) ;
163+ rendered . Add ( ( page . OutputPath , html ) ) ;
164+ renderedPages . Add ( new Validation . RenderedPage ( page , html ) ) ;
165+ } ) ;
166166 var changed = 0 ;
167167 using ( Measure ( "8. write output" ) )
168- foreach ( var ( path , html ) in rendered )
169- {
170- if ( await OutputWriter . WriteTextIfChangedAsync ( site , path , html , ct ) )
168+ foreach ( var ( path , html ) in rendered )
171169 {
172- changed ++ ;
173- _log . LogTrace ( "Wrote {Path}" , path ) ;
170+ if ( await OutputWriter . WriteTextIfChangedAsync ( site , path , html , ct ) )
171+ {
172+ changed ++ ;
173+ _log . LogTrace ( "Wrote {Path}" , path ) ;
174+ }
174175 }
175- }
176176 _log . LogInformation ( "Emitted {Count} HTML pages ({Changed} changed)" , rendered . Count , changed ) ;
177177
178178 // 8b. 404 page.
@@ -188,13 +188,13 @@ public async Task<SiteContext> BuildAsync(CancellationToken ct = default)
188188
189189 // 9. OnPageRendered hooks (search docs, etc.).
190190 using ( Measure ( "9. OnPageRendered hooks" ) )
191- foreach ( var hook in host . BuildHooks )
192- using ( Measure ( PluginLabel ( hook ) ) )
193- foreach ( var page in site . Pages )
194- {
195- if ( hook is IPlugin p && ! PagePluginGate . IsEnabled ( page , p . Name ) ) continue ;
196- await hook . OnPageRenderedAsync ( page , site , ct ) ;
197- }
191+ foreach ( var hook in host . BuildHooks )
192+ using ( Measure ( PluginLabel ( hook ) ) )
193+ foreach ( var page in site . Pages )
194+ {
195+ if ( hook is IPlugin p && ! PagePluginGate . IsEnabled ( page , p . Name ) ) continue ;
196+ await hook . OnPageRenderedAsync ( page , site , ct ) ;
197+ }
198198
199199 // 10. Copy assets (theme + docs static + plugin-registered).
200200 using ( Measure ( "10. copy assets" ) )
@@ -203,12 +203,12 @@ public async Task<SiteContext> BuildAsync(CancellationToken ct = default)
203203
204204 // 11. OnBuildComplete hooks (search index, rss, sitemap).
205205 using ( Measure ( "11. OnBuildComplete hooks" ) )
206- foreach ( var hook in host . BuildHooks )
207- {
208- _log . LogTrace ( "OnBuildComplete: {Hook}" , hook . GetType ( ) . Name ) ;
209- using ( Measure ( PluginLabel ( hook ) ) )
210- await hook . OnBuildCompleteAsync ( site , ct ) ;
211- }
206+ foreach ( var hook in host . BuildHooks )
207+ {
208+ _log . LogTrace ( "OnBuildComplete: {Hook}" , hook . GetType ( ) . Name ) ;
209+ using ( Measure ( PluginLabel ( hook ) ) )
210+ await hook . OnBuildCompleteAsync ( site , ct ) ;
211+ }
212212
213213 // 12. Built-in sitemap.xml.
214214 using ( Measure ( "12. sitemap" ) )
0 commit comments