property-list 0.0.0.3 → 0.0.0.4
raw patch · 4 files changed
+50/−2 lines, 4 filesdep +data-objectPVP ok
version bump matches the API change (PVP)
Dependencies added: data-object
API changes (from Hackage documentation)
Files
- property-list.cabal +4/−2
- src/Data/PropertyList.hs +1/−0
- src/Data/PropertyList/Object.hs +42/−0
- src/Data/PropertyList/Xml.hs +3/−0
property-list.cabal view
@@ -1,5 +1,5 @@ name: property-list-version: 0.0.0.3+version: 0.0.0.4 stability: experimental license: PublicDomain @@ -12,7 +12,7 @@ category: Data, Parsing synopsis: XML property list parser-description: Parser for Apple's XML property list 1.0 format.+description: Parser, data type and formatter for Apple's XML property list 1.0 format. Library hs-source-dirs: src@@ -22,10 +22,12 @@ Data.PropertyList.Type Data.PropertyList.Parse Data.PropertyList.PropertyListItem+ Data.PropertyList.Object build-depends: base >= 3 && <5, bytestring, containers, dataenc,+ data-object, HaXml >= 1.19, mtl, old-locale,
src/Data/PropertyList.hs view
@@ -11,6 +11,7 @@ import Data.PropertyList.Type import Data.PropertyList.Parse import Data.PropertyList.Xml+import Data.PropertyList.Object ({- ToObject instances -}) import Data.PropertyList.PropertyListItem
+ src/Data/PropertyList/Object.hs view
@@ -0,0 +1,42 @@+{-# LANGUAGE + FlexibleContexts, UndecidableInstances+ #-}+module Data.PropertyList.Object ({- instances only -}) where++import Data.Object+import Data.PropertyList.Type+import Data.PropertyList.Parse+import Data.PropertyList.Xml+import Data.ByteString.Char8+import qualified Data.Map as M+import Control.Monad+import Control.Monad+import Control.Monad.Error++instance ToScalar UnparsedPlistItem where+ toScalar = pack . 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) = showToScalar d+ toObject (PLDict d) = toObject d+ toObject (PLReal d) = showToScalar d+ toObject (PLInt i) = showToScalar i+ toObject (PLString s) = stringToScalar s+ toObject (PLBool b) = showToScalar 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++stringToScalar = Scalar . pack+showToScalar :: Show a => a -> Object+showToScalar = stringToScalar . show++test = toObject (undefined :: PropertyList)
src/Data/PropertyList/Xml.hs view
@@ -20,6 +20,9 @@ type PlistItem = OneOf9 Array Data Date Dict AReal AInteger AString X.True X.False +readPlist :: String -> Either String Plist+readPlist = readXml+ readPlistFromFile :: FilePath -> IO (Either String Plist) readPlistFromFile path = do contents <- readFile path