ansiform-1.0.0.1: src/Ansiform/Page.hs
-- | Page builders and runners.
module Ansiform.Page
( module Ansiform.Page
, Internal.Page
, Internal.runPage
, Internal.runPageDefault
, Internal.runPageDefault'
) where
import Ansiform.Internal.Number
--------------------------------------------------------------------------------
import Ansiform.Internal.Page as Internal
import Ansiform.Internal.Section
-- Page Builders
--------------------------------------------------------------------------------
-- | Builds a page from a list of sections.
page :: [Section] -> Page
page = formPage
-- | Replaces one section at the given index.
amendPage :: Page -> Section -> Number -> Page
amendPage p s = amendPage' p [s]
-- | Replaces the sections from the given index onwards.
amendPage' :: Page -> [Section] -> Number -> Page
amendPage' p ss n = formPage $ starter ++ remainder
where
p' = unPage p
n' = unn n
remainder = ss ++ drop (n' + length ss) p'
starter = take n' p'