ansiform-0.7.8.5: src/Ansiform/Internal/State.hs
module Ansiform.Internal.State where
--------------------------------------------------------------------------------
import System.IO (Handle)
import Ansiform.Internal.Number
import Ansiform.Internal.Page
import Ansiform.Internal.Settings
-- State Type
--------------------------------------------------------------------------------
-- State carries the data needed to print each page correctly.
-- | Drawing state: the settings, the page on screen and the line counts from the last draw.
newtype State = State (Settings,Page,[Number])
formState :: Settings -> Page -> [Number] -> State
formState s p ns = State (s,p,ns)
unStateSettings :: State -> IO Config
unStateSettings (State (s,_,_)) = runSettings s
-- Resolves the state settings for a given output handle.
unStateSettingsOn :: Handle -> State -> IO Config
unStateSettingsOn h (State (s,_,_)) = runSettingsOn h s
unStatePage :: State -> Page
unStatePage (State (_,p,_)) = p
unStateResults :: State -> [Number]
unStateResults (State (_,_,ns)) = ns
updateState :: State -> Page -> [Number] -> State
updateState (State (s,_,_)) p ns = formState s p ns