module Data.Hoodle.Generic.Simple where
import Control.Applicative
import Control.Lens
import Data.Hoodle.Generic
import Data.Hoodle.Simple
type SLayer = GLayer () [] Item
type SPage = GPage Background [] SLayer
type SHoodle = GHoodle [] SPage
mkSLayer :: Layer -> SLayer
mkSLayer = GLayer () <$> view items
mkSPage :: Page -> SPage
mkSPage = GPage
<$> view dimension
<*> view background
<*> map mkSLayer . view layers
mkSHoodle :: Hoodle -> SHoodle
mkSHoodle = GHoodle
<$> view title
<*> map mkSPage . view pages
slayer2Layer :: SLayer -> Layer
slayer2Layer (GLayer _ itms) = Layer itms
spage2Page :: SPage -> Page
spage2Page (GPage dim bkg lyrs) = Page dim bkg (map slayer2Layer lyrs)
shoodle2Hoodle :: SHoodle -> Hoodle
shoodle2Hoodle (GHoodle ttl pgs) = Hoodle ttl (map spage2Page pgs)