pangraph-0.1.1.5: src/Pangraph/GraphML/Parser.hs
module Pangraph.GraphML.Parser (
parse,
unsafeParse
) where
import Data.Maybe
import qualified Data.ByteString as BS
import qualified Pangraph as P
import qualified Text.XML.Hexml as H
import qualified Pangraph.Internal.XMLTemplate as PT
-- * Parsing
-- | Returns 'Pangraph' if it can be parsed from a raw GraphML file.
parse :: BS.ByteString -> Maybe P.Pangraph
parse file = either (const Nothing) (PT.hexmlToPangraph PT.graphMLTemplate) (H.parse file)
-- | Like 'parse' except it throws an error on Nothing, which is when parsing fails.
unsafeParse :: BS.ByteString -> P.Pangraph
unsafeParse file = fromMaybe (error "Parse failed") (parse file)