github.com/graemephi/kahugo@v0.62.3-0.20211121071557-d78c0423784d/hugolib/page__position.go (about)

     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/lazy"
    18  	"github.com/gohugoio/hugo/resources/page"
    19  )
    20  
    21  func newPagePosition(n *nextPrev) pagePosition {
    22  	return pagePosition{nextPrev: n}
    23  }
    24  
    25  func newPagePositionInSection(n *nextPrev) pagePositionInSection {
    26  	return pagePositionInSection{nextPrev: n}
    27  }
    28  
    29  type nextPrev struct {
    30  	init     *lazy.Init
    31  	prevPage page.Page
    32  	nextPage page.Page
    33  }
    34  
    35  func (n *nextPrev) next() page.Page {
    36  	n.init.Do()
    37  	return n.nextPage
    38  }
    39  
    40  func (n *nextPrev) prev() page.Page {
    41  	n.init.Do()
    42  	return n.prevPage
    43  }
    44  
    45  type pagePosition struct {
    46  	*nextPrev
    47  }
    48  
    49  func (p pagePosition) Next() page.Page {
    50  	return p.next()
    51  }
    52  
    53  func (p pagePosition) NextPage() page.Page {
    54  	return p.Next()
    55  }
    56  
    57  func (p pagePosition) Prev() page.Page {
    58  	return p.prev()
    59  }
    60  
    61  func (p pagePosition) PrevPage() page.Page {
    62  	return p.Prev()
    63  }
    64  
    65  type pagePositionInSection struct {
    66  	*nextPrev
    67  }
    68  
    69  func (p pagePositionInSection) NextInSection() page.Page {
    70  	return p.next()
    71  }
    72  
    73  func (p pagePositionInSection) PrevInSection() page.Page {
    74  	return p.prev()
    75  }