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 hoodleID
<*> view title
<*> view revisions
<*> view embeddedPdf
<*> 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 hid ttl revs pdf pgs) = Hoodle hid ttl revs pdf (map spage2Page pgs)