diff --git a/src/PDF/Box.hs b/src/PDF/Box.hs index 23817d5..f43a3f8 100644 --- a/src/PDF/Box.hs +++ b/src/PDF/Box.hs @@ -20,6 +20,8 @@ import Control.Monad.State (MonadState(..)) --import Control.Monad.Reader (MonadReader(..)) import Data.Map (Map) import qualified Data.Map as Map (insert, lookup, member) +import Data.OrderedMap (OrderedMap) +import qualified Data.OrderedMap as OrderedMap (lookup, set) import Prelude hiding (fail) {- @@ -66,6 +68,10 @@ instance (Ord k, MonadFail m) => Box m k (Map k a) a where return $ Map.insert k a aMap | otherwise = fail "Unknown key" +instance (Ord k, MonadFail m) => Box m k (OrderedMap k a) a where + r k = maybe (fail "Unknown key") return . OrderedMap.lookup k + w k a orderedMap = r k orderedMap >> return (OrderedMap.set k a orderedMap) + instance (Monad m, Box Maybe i a b) => Box m (Maybe_ i) a (Maybe b) where r (Maybe_ i) = return . r i w (Maybe_ i) (Just b) a =