packages feed

xml-lens 0.1.3 → 0.1.4

raw patch · 2 files changed

+20/−9 lines, 2 files

Files

Text/XML/Lens.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE Rank2Types, FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-} ----------------------------------------------------------------------------- -- | -- Module      :  Text.XML.Lens@@ -12,9 +13,11 @@ ---------------------------------------------------------------------------- module Text.XML.Lens (     -- * Lenses, traversals for 'Element'-    (./)+    Element(..)+    , (./)     -- ** Names     , name+    , localName     , el     , ell     -- ** Attributes@@ -30,25 +33,28 @@     , entire     , nodes     -- * Prisms for 'Node'+    , Node(..)     , _Element     , _Content     , AsInstruction(..)     , AsComment(..)     -- * Lenses for 'Document'+    , Document(..)     , root     , prologue     , epilogue     , doctype     -- * Lenses for 'Name'+    , Name(..)     , _nameLocalName     , _nameNamespace     , _namePrefix     -- * Lenses for 'Instruction'+    , Instruction(..)     , _instructionTarget     , _instructionData-    -- * Reexports+    -- * Reexport     , module Control.Lens-    , module Text.XML     ) where import Text.XML import Control.Lens@@ -104,13 +110,13 @@         _ -> Nothing  _nameLocalName :: Lens' Name Text-_nameLocalName f n = fmap (\x -> n { nameLocalName = x }) $ f $ nameLocalName n+_nameLocalName f n = f (nameLocalName n) <&> \x -> n { nameLocalName = x }  _nameNamespace :: Lens' Name (Maybe Text)-_nameNamespace f n = fmap (\x -> n { nameNamespace = x }) $ f $ nameNamespace n+_nameNamespace f n = f (nameNamespace n) <&> \x -> n { nameNamespace = x }  _namePrefix :: Lens' Name (Maybe Text)-_namePrefix f n = fmap (\x -> n { namePrefix = x }) $ f $ namePrefix n+_namePrefix f n = f (namePrefix n) <&> \x -> n { namePrefix = x }  _Element :: Prism' Node Element _Element = prism' NodeElement $ \s -> case s of@@ -123,8 +129,12 @@     _ -> Nothing  name :: Lens' Element Name-name f e = fmap (\x -> e { elementName = x }) $ f $ elementName e+name f e = f (elementName e) <&> \x -> e { elementName = x } +localName :: Lens' Element Text+localName = name . _nameLocalName+{-# INLINE localName #-}+ attrs :: Lens' Element (Map Name Text) attrs f e = fmap (\x -> e { elementAttributes = x }) $ f $ elementAttributes e @@ -137,7 +147,7 @@ attribute :: Name -> IndexedLens' Name Element (Maybe Text) attribute n = attrs . at n --- | Traverse itself with its all children.+-- | Traverse itself with its all children. Rewriting subnodes of each children will break a traversal law. entire :: Traversal' Element Element entire f e@(Element _ _ ns) = com <$> f e <*> traverse (_Element (entire f)) ns where     com (Element n a _) = Element n a@@ -178,3 +188,4 @@ -- @ (./) :: Plated a => Traversal s t a a -> Traversal a a u v -> Traversal s t u v l ./ m = l . plate . m+{-# INLINE (./) #-}
xml-lens.cabal view
@@ -1,5 +1,5 @@ name:                xml-lens-version:             0.1.3+version:             0.1.4 synopsis:            Lenses, traversals, prisms for xml-conduit description:         Lens-based DOM selector homepage:            https://github.com/fumieval/xml-lens