@@ -1,6 +1,6 @@
11module Text.XML.DOM.Parser.Types
22 ( -- * Parser internals
3− DomPath
3+ DomPath(..)
44 , ParserError(..)
55 , pePath
66 , peDetails
@@ -21,19 +21,20 @@ module Text.XML.DOM.Parser.Types
2121 , throwWrongFormat
2222 ) where
2323
24−import Control.Exception
25−import Control.Lens
26−import Control.Monad.Except
27−import Control.Monad.Reader
28−import Data.List.NonEmpty (NonEmpty(..))
29−import qualified Data.List.NonEmpty as NE
30−import Data.Maybe
31−import Data.Text (Text)
32−import GHC.Generics (Generic)
33−import Text.XML
34−import Text.XML.Lens
35−
36−type DomPath = [Text]
24+import Control.Exception
25+import Control.Lens
26+import Control.Monad.Except
27+import Control.Monad.Reader
28+import Data.List.NonEmpty as NE
29+import Data.Maybe
30+import Data.Text (Text)
31+import GHC.Generics (Generic)
32+import Text.XML
33+import Text.XML.Lens
34+
35+newtype DomPath = DomPath
36+ { unDomPath :: [Text]
37+ } deriving (Eq, Ord, Show, Read, Monoid)
3738
3839-- | DOM parser error description.
3940data ParserError
@@ -121,7 +122,7 @@ runDomParserT
121122runDomParserT doc par =
122123 let pd = ParserData
123124 { _pdElements = doc ^. root . to pure
124− , _pdPath = [doc ^. root . localName]
125+ , _pdPath = DomPath [doc ^. root . localName]
125126 }
126127 in runExceptT $ runReaderT par pd
127128
@@ -152,11 +153,11 @@ instance DomTraversable NonEmpty where
152153
153154throwParserError
154155 :: (MonadError ParserErrors m, MonadReader (ParserData f) m)
155− => ([Text] -> ParserError)
156+ => (DomPath -> ParserError)
156157 -> m a
157158throwParserError mkerr = do
158159 path <- view pdPath
159− throwError $ ParserErrors [mkerr path]
160+ throwError $ ParserErrors $ [mkerr path]
160161
161162-- | Throw 'PEWrongFormat' as very common case
162163throwWrongFormat