zettelkast-0.1.0.0: src/Data/ZettelPath.hs
module Data.ZettelPath where
import Data.Path
import Control.Lens
(Iso', Lens', iso, lens, set, view)
newtype ZettelRoot = ZettelRoot (Path Root Dir)
_ZettelRoot :: Iso' (Path Root Dir) ZettelRoot
_ZettelRoot = iso ZettelRoot (\(ZettelRoot r) -> r)
class HasZettelRoot a where
{-# MINIMAL getZettelRoot, setZettelRoot | zettelRoot #-}
getZettelRoot :: a -> ZettelRoot
getZettelRoot = view zettelRoot
setZettelRoot :: a -> ZettelRoot -> a
setZettelRoot = flip (set zettelRoot)
zettelRoot :: Lens' a ZettelRoot
zettelRoot = lens getZettelRoot setZettelRoot
instance HasZettelRoot ZettelRoot where
zettelRoot = lens id (\_ b -> b)