@@ -72,12 +72,7 @@ type pageMeta struct {
7272// Prepare for a rebuild of the data passed in from front matter.
7373func (m * pageMeta ) setMetaPostPrepareRebuild () {
7474 params := xmaps .Clone (m .paramsOriginal )
75- m .pageMetaParams .pageConfig = & pagemeta.PageConfig {
76- Kind : m .pageConfig .Kind ,
77- Lang : m .pageConfig .Lang ,
78- Path : m .pageConfig .Path ,
79- Params : params ,
80- }
75+ m .pageMetaParams .pageConfig = pagemeta .ClonePageConfigForRebuild (m .pageMetaParams .pageConfig , params )
8176}
8277
8378type pageMetaParams struct {
@@ -94,7 +89,11 @@ type pageMetaParams struct {
9489
9590func (m * pageMetaParams ) init (preserveOriginal bool ) {
9691 if preserveOriginal {
97- m .paramsOriginal = xmaps.Clone [maps.Params ](m .pageConfig .Params )
92+ if m .pageConfig .IsFromContentAdapter {
93+ m .paramsOriginal = xmaps .Clone (m .pageConfig .ContentAdapterData )
94+ } else {
95+ m .paramsOriginal = xmaps .Clone (m .pageConfig .Params )
96+ }
9897 m .cascadeOriginal = m .pageConfig .CascadeCompiled .Clone ()
9998 }
10099}
@@ -254,7 +253,7 @@ func (p *pageMeta) setMetaPre(pi *contentParseInfo, logger loggers.Logger, conf
254253 // Check for any cascade define on itself.
255254 if cv , found := frontmatter ["cascade" ]; found {
256255 var err error
257- cascade , err := page .DecodeCascade (logger , cv )
256+ cascade , err := page .DecodeCascade (logger , true , cv )
258257 if err != nil {
259258 return err
260259 }
@@ -341,18 +340,29 @@ func (ps *pageState) setMetaPost(cascade *maps.Ordered[page.PageMatcher, maps.Pa
341340 }
342341
343342 // Cascade is also applied to itself.
343+ var err error
344344 cascade .Range (func (k page.PageMatcher , v maps.Params ) bool {
345345 if ! k .Matches (ps ) {
346346 return true
347347 }
348348 for kk , vv := range v {
349- if _ , found := ps .m .pageConfig .Params [kk ]; ! found {
350- ps .m .pageConfig .Params [kk ] = vv
349+ if ps .m .pageConfig .IsFromContentAdapter {
350+ if _ , found := ps .m .pageConfig .ContentAdapterData [kk ]; ! found {
351+ ps .m .pageConfig .ContentAdapterData [kk ] = vv
352+ }
353+ } else {
354+ if _ , found := ps .m .pageConfig .Params [kk ]; ! found {
355+ ps .m .pageConfig .Params [kk ] = vv
356+ }
351357 }
352358 }
353359 return true
354360 })
355361
362+ if err != nil {
363+ return err
364+ }
365+
356366 if err := ps .setMetaPostParams (); err != nil {
357367 return err
358368 }
@@ -398,6 +408,12 @@ func (p *pageState) setMetaPostParams() error {
398408 PathOrTitle : p .pathOrTitle (),
399409 }
400410
411+ if isContentAdapter {
412+ if err := pm .pageConfig .Compile (ext , p .s .Log , p .s .conf .OutputFormats .Config , p .s .conf .MediaTypes .Config ); err != nil {
413+ return err
414+ }
415+ }
416+
401417 // Handle the date separately
402418 // TODO(bep) we need to "do more" in this area so this can be split up and
403419 // more easily tested without the Page, but the coupling is strong.
@@ -656,7 +672,7 @@ params:
656672 return err
657673 }
658674
659- if err := pcfg .Compile ("" , false , ext , p .s .Log , p .s .conf .OutputFormats .Config , p .s .conf .MediaTypes .Config ); err != nil {
675+ if err := pcfg .Compile (ext , p .s .Log , p .s .conf .OutputFormats .Config , p .s .conf .MediaTypes .Config ); err != nil {
660676 return err
661677 }
662678
0 commit comments