git.iko.soy/typeable/dom-parser
on master help sign in
Upd: pre-release fixups
commit9636ea0eec557ae55fe48dcff4c7999bd0af24e4 authorAleksey Uimanov <s9gf4ult@gmail.com> dateThu 22 Dec 2016, 02:12 (10 years ago) parentf7ff370
4 files changed+34
CHANGELOG.md+6 dom-parser.cabal+8 src/Text/XML/DOM/Parser/Class.hs+4 src/Text/XML/DOM/Parser/Combinators.hs+16
CHANGELOG.md+6
@@ -1,4 +1,10 @@
11# CHANGELOG
22
3+## 1.0.0
4+* Added support for parsing attributes
5+* Changed public interface for 'parseContent'
6+* Added usefull functions
7+* Dropped unnecessary dependency from shakespeare
8+
39## 0.1.0
410* Public release
dom-parser.cabal+8
@@ -10,6 +10,14 @@ build-type: Simple
1010extra-source-files: CHANGELOG.md
1111cabal-version: >=1.10
1212
13+extra-source-files: CHANGELOG.md
14+
15+homepage: https://github.com/typeable/dom-parser
16+
17+source-repository head
18+ type: git
19+ location: git@github.com:typeable/dom-parser.git
20+
1321library
1422 hs-source-dirs: src
1523 default-language: Haskell2010
src/Text/XML/DOM/Parser/Class.hs+4
@@ -105,6 +105,9 @@ stringFromDom = parseContent $ Right . T.unpack
105105charFromDom :: (Monad m) => DomParserT Identity m Char
106106charFromDom = parseContent readChar
107107
108+-- | Expects text to be single character
109+--
110+-- @since 1.0.0
108111readChar :: Text -> Either Text Char
109112readChar t = case T.unpack $ T.strip t of
110113 [c] -> Right c
@@ -130,6 +133,7 @@ fixedFromDom = parseContent readContent
130133boolFromDom :: (Monad m) => DomParserT Identity m Bool
131134boolFromDom = parseContent readBool
132135
136+-- | @since 1.0.0
133137readBool :: Text -> Either Text Bool
134138readBool t =
135139 let
src/Text/XML/DOM/Parser/Combinators.hs+16
@@ -207,6 +207,8 @@ ignoreBlank = ignoreElem test
207207 | otherwise -> False
208208
209209-- | Returns name of current element.
210+--
211+-- @since 1.0.0
210212getCurrentName :: (Monad m) => DomParserT Identity m Text
211213getCurrentName = view $ pdElements . to runIdentity . localName
212214
@@ -227,6 +229,8 @@ checkCurrentName n = do
227229
228230-- | Get current content. If current element contains no content or
229231-- have inner elements then Nothing returned
232+--
233+-- @since 1.0.0
230234getCurrentContent :: (Monad m) => DomParserT Identity m (Maybe Text)
231235getCurrentContent = do
232236 nds <- view $ pdElements . to runIdentity . nodes
@@ -254,6 +258,10 @@ parseContent parse = getCurrentContent >>= \case
254258 Left e -> throwParserError $ PEWrongFormat e
255259 Right a -> return a
256260
261+-- | If reader returns 'Nothing' then resulting function returns 'Left
262+-- "error message"'
263+--
264+-- @since 1.0.0
257265maybeReadContent
258266 :: forall a
259267 . (Typeable a)
@@ -275,9 +283,15 @@ readContent
275283 -> Either Text a
276284readContent = maybeReadContent $ readMaybe . T.unpack . T.strip
277285
286+-- | Retuns map of attributes of current element
287+--
288+-- @since 1.0.0
278289getCurrentAttributes :: (Monad m) => DomParserT Identity m (M.Map Name Text)
279290getCurrentAttributes = view $ pdElements . to runIdentity . attrs
280291
292+-- | Returns element with given name or 'Nothing'
293+--
294+-- @since 1.0.0
281295getCurrentAttribute :: (Monad m) => Text -> DomParserT Identity m (Maybe Text)
282296getCurrentAttribute attrName'
283297 = preview $ pdElements . to runIdentity . attr attrName
@@ -285,6 +299,8 @@ getCurrentAttribute attrName'
285299 attrName = Name attrName' Nothing Nothing
286300
287301-- | Parses attribute with given name, throws error if attribute is not found.
302+--
303+-- @since 1.0.0
288304parseAttribute
289305 :: (Monad m)
290306 => Text