git.iko.soy/typeable/xml-lens
on master help sign in
minor update
commit35ded4fbee5ee4aec179df9246a3792f8fdcae0d authorFumiaki Kinoshita <fumiexcel@gmail.com> dateFri 20 Sep 2013, 23:14 (13 years ago) parentd1790ef
2 files changed+20−9
Text/XML/Lens.hs+19−8 xml-lens.cabal+1−1
Text/XML/Lens.hs+19−8
@@ -1,4 +1,5 @@
11{-# LANGUAGE Rank2Types, FlexibleContexts #-}
2+{-# OPTIONS_GHC -fno-warn-orphans #-}
23-----------------------------------------------------------------------------
34-- |
45-- Module : Text.XML.Lens
@@ -12,9 +13,11 @@
1213----------------------------------------------------------------------------
1314module Text.XML.Lens (
1415 -- * Lenses, traversals for 'Element'
15− (./)
16+ Element(..)
17+ , (./)
1618 -- ** Names
1719 , name
20+ , localName
1821 , el
1922 , ell
2023 -- ** Attributes
@@ -30,25 +33,28 @@ module Text.XML.Lens (
3033 , entire
3134 , nodes
3235 -- * Prisms for 'Node'
36+ , Node(..)
3337 , _Element
3438 , _Content
3539 , AsInstruction(..)
3640 , AsComment(..)
3741 -- * Lenses for 'Document'
42+ , Document(..)
3843 , root
3944 , prologue
4045 , epilogue
4146 , doctype
4247 -- * Lenses for 'Name'
48+ , Name(..)
4349 , _nameLocalName
4450 , _nameNamespace
4551 , _namePrefix
4652 -- * Lenses for 'Instruction'
53+ , Instruction(..)
4754 , _instructionTarget
4855 , _instructionData
49− -- * Reexports
56+ -- * Reexport
5057 , module Control.Lens
51− , module Text.XML
5258 ) where
5359import Text.XML
5460import Control.Lens
@@ -104,13 +110,13 @@ instance AsComment Miscellaneous where
104110 _ -> Nothing
105111
106112_nameLocalName :: Lens' Name Text
107−_nameLocalName f n = fmap (\x -> n { nameLocalName = x }) $ f $ nameLocalName n
113+_nameLocalName f n = f (nameLocalName n) <&> \x -> n { nameLocalName = x }
108114
109115_nameNamespace :: Lens' Name (Maybe Text)
110−_nameNamespace f n = fmap (\x -> n { nameNamespace = x }) $ f $ nameNamespace n
116+_nameNamespace f n = f (nameNamespace n) <&> \x -> n { nameNamespace = x }
111117
112118_namePrefix :: Lens' Name (Maybe Text)
113−_namePrefix f n = fmap (\x -> n { namePrefix = x }) $ f $ namePrefix n
119+_namePrefix f n = f (namePrefix n) <&> \x -> n { namePrefix = x }
114120
115121_Element :: Prism' Node Element
116122_Element = prism' NodeElement $ \s -> case s of
@@ -123,7 +129,11 @@ _Content = prism' NodeContent $ \s -> case s of
123129 _ -> Nothing
124130
125131name :: Lens' Element Name
126−name f e = fmap (\x -> e { elementName = x }) $ f $ elementName e
132+name f e = f (elementName e) <&> \x -> e { elementName = x }
133+
134+localName :: Lens' Element Text
135+localName = name . _nameLocalName
136+{-# INLINE localName #-}
127137
128138attrs :: Lens' Element (Map Name Text)
129139attrs f e = fmap (\x -> e { elementAttributes = x }) $ f $ elementAttributes e
@@ -137,7 +147,7 @@ attr n = attrs . ix n
137147attribute :: Name -> IndexedLens' Name Element (Maybe Text)
138148attribute n = attrs . at n
139149
140−-- | Traverse itself with its all children.
150+-- | Traverse itself with its all children. Rewriting subnodes of each children will break a traversal law.
141151entire :: Traversal' Element Element
142152entire f e@(Element _ _ ns) = com <$> f e <*> traverse (_Element (entire f)) ns where
143153 com (Element n a _) = Element n a
@@ -178,3 +188,4 @@ instance Plated Element where
178188-- @
179189(./) :: Plated a => Traversal s t a a -> Traversal a a u v -> Traversal s t u v
180190l ./ m = l . plate . m
191+{-# INLINE (./) #-}
xml-lens.cabal+1−1
@@ -1,5 +1,5 @@
11name: xml-lens
2−version: 0.1.3
2+version: 0.1.4
33synopsis: Lenses, traversals, prisms for xml-conduit
44description: Lens-based DOM selector
55homepage: https://github.com/fumieval/xml-lens