page__position.go (1646B)
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 }