Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data PageNumber
- data PerPage
- data ItemsCount
- pageOffset :: PageNumber -> PerPage -> ItemsCount
- data Page a
- pageItems :: Page a -> [a]
- pageNumber :: Page a -> PageNumber
- toPage :: [a] -> PageNumber -> Page a
- data Pages a
- pagesCurrent :: Pages a -> Page a
- pagesLast :: Pages a -> PageNumber
- toPages :: PageNumber -> PerPage -> ItemsCount -> [a] -> Pages a
- takePreviousPages :: Natural -> Pages a -> [PageNumber]
- takeNextPages :: Natural -> Pages a -> [PageNumber]
- getPreviousPage :: Pages a -> Maybe PageNumber
- getNextPage :: Pages a -> Maybe PageNumber
Type safe Natural
s
Natural
N.B.
and PageNumber
will currently allow PerPage
0
, but it's
unclear if that's correct and may not be the case in the future.
data PageNumber Source #
data ItemsCount Source #
pageOffset :: PageNumber -> PerPage -> ItemsCount Source #
Calculate a page's zero-based offset in the overall items
>>>
pageOffset 4 3
9
Page
pageNumber :: Page a -> PageNumber Source #
Pages
pagesCurrent :: Pages a -> Page a Source #
pagesLast :: Pages a -> PageNumber Source #
toPages :: PageNumber -> PerPage -> ItemsCount -> [a] -> Pages a Source #
Construct a
from paginated dataPages
a
>>>
toPages 4 3 10 []
Pages {pagesCurrent = Page {pageItems = [], pageNumber = 4}, pagesPrevious = [1,2,3], pagesNext = [], pagesLast = 4}
Safely accessing Pages data
takePreviousPages :: Natural -> Pages a -> [PageNumber] Source #
Take previous pages, going back from current
>>>
takePreviousPages 3 $ Pages (Page [] 5) [1,2,3,4] [6] 6
[2,3,4]
takeNextPages :: Natural -> Pages a -> [PageNumber] Source #
Take next pages, going forward from current
>>>
takeNextPages 3 $ Pages (Page [] 2) [1] [3,4,5,6] 6
[3,4,5]
getPreviousPage :: Pages a -> Maybe PageNumber Source #
The previous page number, if it exists
>>>
getPreviousPage $ Pages (Page [] 1) [] [2,3,4] 4
Nothing
>>>
getPreviousPage $ Pages (Page [] 2) [1] [3,4] 4
Just 1
getNextPage :: Pages a -> Maybe PageNumber Source #
The next page number, if it exists
>>>
getNextPage $ Pages (Page [] 4) [1,2,3] [] 4
Nothing
>>>
getNextPage $ Pages (Page [] 3) [1,2] [4] 4
Just 4