git.iko.soy/typeable/dom-parser
on master help sign in
CHANGELOG.md+11
since splitsnapshots
unifiedsplit
@@ -2,6 +2,17 @@
2
2
3## HEAD
3## HEAD
4
4
5+## 3.2.0
6+
7+### Added
8+
9+* Text.XML.Soap module with XmlEnvelope stuff in it.
10+* GHC 9 compatibility.
11+
12+### Removed
13+
14+* Old stackage files.
15+
5## 3.1.0
16## 3.1.0
6
17
7### Added
18### Added
dom-parser.cabal+8−8
@@ -1,5 +1,5 @@
1name: dom-parser
1name: dom-parser
2−version: 3.1.0
2+version: 3.2.0
3synopsis: Simple monadic DOM parser
3synopsis: Simple monadic DOM parser
4license: MIT
4license: MIT
5license-file: LICENSE
5license-file: LICENSE
@@ -9,10 +9,9 @@ category: XML
9build-type: Simple
9build-type: Simple
10cabal-version: >=1.10
10cabal-version: >=1.10
11homepage: https://github.com/typeable/dom-parser
11homepage: https://github.com/typeable/dom-parser
12−tested-with: GHC == 7.10.3
12+tested-with: GHC == 9.2.7
13− , GHC == 8.0.2
13+ , GHC == 9.4.8
14− , GHC == 8.2.2
14+ , GHC == 9.6.3
15− , GHC == 8.4.1
16extra-source-files: CHANGELOG.md
15extra-source-files: CHANGELOG.md
17 , README.md
16 , README.md
18
17
@@ -45,16 +44,16 @@ library
45 , TypeFamilies
44 , TypeFamilies
46 , TypeOperators
45 , TypeOperators
47 , UndecidableInstances
46 , UndecidableInstances
48− build-depends: base >= 4.7 && < 5
47+ build-depends: base >= 4.11 && < 5
49 , case-insensitive
48 , case-insensitive
50 , containers
49 , containers
51 , lens
50 , lens
52− , mtl
51+ , mtl < 2.3 || > 2.3
53 , scientific
52 , scientific
54− , semigroups
55 , text
53 , text
56 , transformers
54 , transformers
57 , xml-conduit
55 , xml-conduit
56+ , xml-conduit-writer
58 , xml-lens
57 , xml-lens
59 exposed-modules: Text.XML.DOM.Parser
58 exposed-modules: Text.XML.DOM.Parser
60 , Text.XML.DOM.Parser.Attributes
59 , Text.XML.DOM.Parser.Attributes
@@ -64,6 +63,7 @@ library
64 , Text.XML.DOM.Parser.FromAttribute
63 , Text.XML.DOM.Parser.FromAttribute
65 , Text.XML.DOM.Parser.FromDom
64 , Text.XML.DOM.Parser.FromDom
66 , Text.XML.DOM.Parser.Types
65 , Text.XML.DOM.Parser.Types
66+ , Text.XML.Soap
67
67
68test-suite test
68test-suite test
69 type: exitcode-stdio-1.0
69 type: exitcode-stdio-1.0
ghc-802.yamldeleted−3
@@ -1,3 +0,0 @@
1−resolver: lts-9.0
2−packages:
3− - .
ghc-822.yamldeleted−1
@@ -1 +0,0 @@
1−resolver: lts-10.0
ghc-841.yamldeleted−1
@@ -1 +0,0 @@
1−resolver: nightly-2018-03-16
ghc-963.yamlnew file+7
@@ -0,0 +1,7 @@
1+resolver: lts-22.6
2+
3+extra-deps:
4+ - xml-conduit-writer-0.1.1.5
5+
6+nix:
7+ packages: [zlib]
src/Text/XML/DOM/Parser/Combinators.hs−1
@@ -22,7 +22,6 @@ import Control.Monad.Reader
22import Data.Foldable as F
22import Data.Foldable as F
23import Data.List as L
23import Data.List as L
24import Data.List.NonEmpty (NonEmpty(..))
24import Data.List.NonEmpty (NonEmpty(..))
25−import Data.Monoid
26import Data.Text as T
25import Data.Text as T
27import Data.Traversable
26import Data.Traversable
28import Text.XML
27import Text.XML
src/Text/XML/DOM/Parser/Content.hs+2−1
@@ -20,6 +20,7 @@ import Data.List as L
20import Data.Monoid
20import Data.Monoid
21import Data.Text as T
21import Data.Text as T
22import Data.Typeable
22import Data.Typeable
23+import Prelude as P
23import Text.Read
24import Text.Read
24import Text.XML.DOM.Parser.Types
25import Text.XML.DOM.Parser.Types
25import Text.XML.Lens
26import Text.XML.Lens
@@ -93,7 +94,7 @@ maybeReadContent
93maybeReadContent f t = maybe (Left msg) Right $ f t
94maybeReadContent f t = maybe (Left msg) Right $ f t
94 where
95 where
95 msg = "Not readable " <> n <> ": " <> t
96 msg = "Not readable " <> n <> ": " <> t
96− n = T.pack $ show $ typeRep (Proxy :: Proxy a)
97+ n = T.pack $ P.show $ typeRep (Proxy :: Proxy a)
97
98
98
99
99-- | Tries to read given text to value using 'Read'. Useful to use
100-- | Tries to read given text to value using 'Read'. Useful to use
src/Text/XML/DOM/Parser/Types.hs−1
@@ -36,7 +36,6 @@ import Control.Lens
36import Control.Monad.Except
36import Control.Monad.Except
37import Control.Monad.Reader
37import Control.Monad.Reader
38import Data.CaseInsensitive as CI
38import Data.CaseInsensitive as CI
39−import Data.Semigroup
40import Data.String
39import Data.String
41import Data.Text as T
40import Data.Text as T
42import GHC.Generics (Generic)
41import GHC.Generics (Generic)
src/Text/XML/Soap.hsnew file+46
@@ -0,0 +1,46 @@
1+module Text.XML.Soap where
2+
3+import Control.Lens
4+import Data.String
5+import Text.XML
6+import Text.XML.DOM.Parser
7+import Text.XML.Writer
8+
9+data XmlEnvelope h b = XmlEnvelope
10+ { _xeHeader :: !(Maybe h)
11+ , _xeBody :: !(Maybe b)
12+ } deriving (Eq, Show)
13+
14+makeLenses ''XmlEnvelope
15+
16+xmlEnvelopeToDocument :: (ToXML h, ToXML b) => XmlEnvelope h b -> Document
17+xmlEnvelopeToDocument xe = doc
18+ where
19+ sname n = fromString $ "{http://schemas.xmlsoap.org/soap/envelope/}" <> n
20+ doc =
21+ Document
22+ { documentPrologue = Prologue [] Nothing []
23+ , documentRoot =
24+ Element
25+ { elementName = sname "Envelope"
26+ , elementAttributes = mempty
27+ , elementNodes = [NodeElement header, NodeElement body]
28+ }
29+ , documentEpilogue = []
30+ }
31+ header =
32+ Element
33+ { elementName = sname "Header"
34+ , elementAttributes = mempty
35+ , elementNodes = render . toXML $ xe ^. xeHeader
36+ }
37+ body =
38+ Element
39+ { elementName = sname "Body"
40+ , elementAttributes = mempty
41+ , elementNodes = render . toXML $ xe ^. xeBody
42+ }
43+
44+instance (FromDom h, FromDom b) => FromDom (XmlEnvelope h b) where
45+ fromDom = XmlEnvelope <$> inElemMay "Header" fromDom
46+ <*> inElemMay "Body" fromDom
stack.yamlmode 100644 → 120000+1−3
@@ -1,3 +0,0 @@
1−resolver: lts-6.35
2−packages:
3− - .
@@ -0,0 +1 @@
1+ghc-963.yaml