collections.go (1561B)
1 // Copyright 2019 The Hugo Authors. All rights reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // http://www.apache.org/licenses/LICENSE-2.0 7 // 8 // Unless required by applicable law or agreed to in writing, software 9 // distributed under the License is distributed on an "AS IS" BASIS, 10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package hugolib 15 16 import ( 17 "github.com/gohugoio/hugo/common/collections" 18 "github.com/gohugoio/hugo/resources/page" 19 ) 20 21 var ( 22 _ collections.Grouper = (*pageState)(nil) 23 _ collections.Slicer = (*pageState)(nil) 24 ) 25 26 // collections.Slicer implementations below. We keep these bridge implementations 27 // here as it makes it easier to get an idea of "type coverage". These 28 // implementations have no value on their own. 29 30 // Slice is for internal use. 31 func (p *pageState) Slice(items any) (any, error) { 32 return page.ToPages(items) 33 } 34 35 // collections.Grouper implementations below 36 37 // Group creates a PageGroup from a key and a Pages object 38 // This method is not meant for external use. It got its non-typed arguments to satisfy 39 // a very generic interface in the tpl package. 40 func (p *pageState) Group(key any, in any) (any, error) { 41 pages, err := page.ToPages(in) 42 if err != nil { 43 return nil, err 44 } 45 return page.PageGroup{Key: key, Pages: pages}, nil 46 }