@@ -125,11 +125,13 @@ func (s Site) cloneForVersionAndRole(version, role int) *Site {
125
125
126
126
// TODO1 adjust all methods that uses the embedded siteRole to use the siteRole directly.
127
127
type siteRole struct {
128
- rolei int
129
- role roles.Role
128
+ rolei int
129
+ roleInternal roles.RoleInternal
130
+ role roles.Role
130
131
131
- versioni int
132
- version versions.Version
132
+ versioni int
133
+ versionInternal versions.VersionInternal
134
+ version versions.Version
133
135
134
136
pageMap * pageMap
135
137
@@ -174,8 +176,8 @@ func (s *Site) Debug() {
174
176
// NewHugoSites creates HugoSites from the given config.
175
177
func NewHugoSites (cfg deps.DepsCfg ) (* HugoSites , error ) {
176
178
conf := cfg .Configs .GetFirstLanguageConfig ()
177
- roles := cfg .Configs .Base .Roles .Config .Sorted
178
- versions := cfg .Configs .Base .Versions .Config .Sorted
179
+ rolesSorted := cfg .Configs .Base .Roles .Config .Sorted
180
+ versionsSorted := cfg .Configs .Base .Versions .Config .Sorted
179
181
180
182
var logger loggers.Logger
181
183
if cfg .TestLogger != nil {
@@ -265,7 +267,7 @@ func NewHugoSites(cfg deps.DepsCfg) (*HugoSites, error) {
265
267
Shifter : ns ,
266
268
}
267
269
268
- dimensionLengths := []int {len (confm .Languages ), len (versions ), len (roles )}
270
+ dimensionLengths := []int {len (confm .Languages ), len (versionsSorted ), len (rolesSorted )}
269
271
270
272
pageTrees := & pageTrees {
271
273
treePages : doctree .New (
@@ -316,10 +318,12 @@ func NewHugoSites(cfg deps.DepsCfg) (*HugoSites, error) {
316
318
// TODO1 clean up s vs siteRole injected.
317
319
pm := newPageMap (i , 0 , 0 , s , memCache , pageTrees )
318
320
s .siteRole = & siteRole {
319
- pageMap : pm ,
320
- role : roles [0 ],
321
- version : versions [0 ],
322
- pageFinder : newPageFinder (pm ),
321
+ pageMap : pm ,
322
+ roleInternal : rolesSorted [0 ],
323
+ role : roles .NewRoleSite (rolesSorted [0 ], s ),
324
+ versionInternal : versionsSorted [0 ],
325
+ version : versions .NewVersionSite (versionsSorted [0 ], s ),
326
+ pageFinder : newPageFinder (pm ),
323
327
}
324
328
325
329
s .siteRefLinker , err = newSiteRefLinker (s )
@@ -367,22 +371,24 @@ func NewHugoSites(cfg deps.DepsCfg) (*HugoSites, error) {
367
371
return li .Lang < lj .Lang
368
372
})
369
373
370
- versionsRolesSites := make ([][][]* Site , len (versions ))
371
- for i := 0 ; i < len (versions ); i ++ {
372
- versionsRolesSites [i ] = make ([][]* Site , len (roles ))
374
+ versionsRolesSites := make ([][][]* Site , len (versionsSorted ))
375
+ for i := 0 ; i < len (versionsSorted ); i ++ {
376
+ versionsRolesSites [i ] = make ([][]* Site , len (rolesSorted ))
373
377
}
374
378
versionsRolesSites [0 ][0 ] = sites
375
- for i := 0 ; i < len (versions ); i ++ {
376
- for j := 0 ; j < len (roles ); j ++ {
379
+ for i := 0 ; i < len (versionsSorted ); i ++ {
380
+ for j := 0 ; j < len (rolesSorted ); j ++ {
377
381
if i == 0 && j == 0 {
378
382
// Already done.
379
383
continue
380
384
}
381
385
roleSites := make ([]* Site , len (sites ))
382
386
for k , s := range sites {
383
387
roleSites [k ] = s .cloneForVersionAndRole (i , j )
384
- roleSites [k ].role = roles [j ]
385
- roleSites [k ].version = versions [i ]
388
+ roleSites [k ].roleInternal = rolesSorted [j ]
389
+ roleSites [k ].role = roles .NewRoleSite (rolesSorted [j ], roleSites [k ])
390
+ roleSites [k ].versionInternal = versionsSorted [i ]
391
+ roleSites [k ].version = versions .NewVersionSite (versionsSorted [i ], roleSites [k ])
386
392
pm := newPageMap (k , i , j , s , memCache , pageTrees )
387
393
roleSites [k ].pageMap = pm
388
394
roleSites [k ].pageFinder = newPageFinder (pm )
@@ -917,6 +923,14 @@ func (s *Site) Language() *langs.Language {
917
923
return s .language
918
924
}
919
925
926
+ func (s * Site ) Role () roles.Role {
927
+ return s .role
928
+ }
929
+
930
+ func (s * Site ) Version () versions.Version {
931
+ return s .version
932
+ }
933
+
920
934
func (s * Site ) Languages () langs.Languages {
921
935
return s .h .Configs .Languages
922
936
}
@@ -1454,7 +1468,7 @@ func (s *Site) getLanguagePermalinkLang(alwaysInSubDir bool) string {
1454
1468
}
1455
1469
1456
1470
func (s * Site ) getPrefixRole () string {
1457
- role := s .role
1471
+ role := s .roleInternal
1458
1472
if role .Default {
1459
1473
if s .conf .DefaultContentRoleInSubdir {
1460
1474
return role .Name
@@ -1465,7 +1479,7 @@ func (s *Site) getPrefixRole() string {
1465
1479
}
1466
1480
1467
1481
func (s * Site ) getPrefixVersion () string {
1468
- version := s .version
1482
+ version := s .versionInternal
1469
1483
if version .Default {
1470
1484
if s .conf .DefaultContentVersionInSubdir {
1471
1485
return version .Name
0 commit comments