module Data.PropertyList.Object () where
import Data.Object
import Data.PropertyList.Type
import Data.PropertyList.Parse
import Data.PropertyList.Xml
import qualified Data.Map as M
import Control.Monad
import Control.Monad
import Control.Monad.Error
instance ToScalar UnparsedPlistItem where
toScalar = toScalar . showXml . plistItemToPlist . unparsedPlistItemToPlistItem
instance ToObject UnparsedPlistItem where
toObject = Scalar . toScalar
instance (ToObject (l a), ToObject (m a)) => ToObject (PropertyListS l m a) where
toObject (PLArray a) = toObject a
toObject (PLData bs) = toObject bs
toObject (PLDate d) = showToObject d
toObject (PLDict d) = toObject d
toObject (PLReal d) = showToObject d
toObject (PLInt i) = showToObject i
toObject (PLString s) = toObject s
toObject (PLBool b) = showToObject b
instance (ToObject (f (M f a)), ToObject a) => ToObject (M f a) where
toObject (S x) = toObject x
toObject (V a) = toObject a
instance (ToScalar k, ToObject v) => ToObject (M.Map k v) where
toObject = toObject . M.assocs
showToObject :: Show a => a -> Object
showToObject = toObject . show
test :: Object
test = toObject (undefined :: PropertyList)