feed-1.3.2.0: src/Data/Text/Util.hs
module Data.Text.Util
( readInt
, renderFeed
, renderFeedWith
) where
import Prelude.Compat
import Data.Text
import Data.Text.Read
import qualified Data.Text.Lazy as TL
import qualified Data.XML.Types as XT -- from xml-types
import qualified Text.XML as XC -- from xml-conduit
readInt :: Text -> Maybe Integer
readInt s =
case decimal s of
Right (x, _) -> Just x
_ -> Nothing
renderFeed :: (a -> XT.Element) -> a -> Maybe TL.Text
renderFeed = renderFeedWith XC.def
renderFeedWith :: XC.RenderSettings -> (a -> XT.Element) -> a -> Maybe TL.Text
renderFeedWith opts cf f =
let e = cf f
d = elToDoc e
in XC.renderText opts <$> d
-- Ancillaries --
elToDoc :: XT.Element -> Maybe XC.Document
elToDoc el =
let txd = XT.Document (XC.Prologue [] Nothing []) el []
cxd = XC.fromXMLDocument txd
in either (const Nothing) Just cxd