@@ -3,13 +3,13 @@
33-----------------------------------------------------------------------------
44-- |
55-- Module : Text.XML.Lens
6−-- Copyright : (C) 2013 Fumiaki Kinoshita
6+-- Copyright : (C) 2015 Fumiaki Kinoshita
77-- License : BSD-style (see the file LICENSE)
88--
99-- Maintainer : Fumiaki Kinoshita <fumiexcel@gmail.com>
10−-- Stability : experimental
10+-- Stability : provisional
1111-- Portability : non-portable
12−-- Useful traversals inspired by XPath
12+--
1313----------------------------------------------------------------------------
1414module Text.XML.Lens (
1515 -- * Lenses, traversals for 'Element'
@@ -62,6 +62,7 @@ import Control.Lens
6262import Data.Text (Text)
6363import Data.Map (Map)
6464import Control.Applicative
65+import Data.CaseInsensitive as CI
6566
6667infixr 9 ./
6768
@@ -153,14 +154,15 @@ entire :: Traversal' Element Element
153154entire f e@(Element _ _ ns) = com <$> f e <*> traverse (_Element (entire f)) ns where
154155 com (Element n a _) = Element n a
155156
156−-- | Traverse elements which has the specified *local* name.
157−named :: Text -> Traversal' Element Element
157+-- | Traverse elements which has the specified *local* name (case-insensitive).
158+named :: CI.CI Text -> Traversal' Element Element
158159named n f s
159− | nameLocalName (elementName s) == n = f s
160+ | CI.mk (nameLocalName (elementName s)) == n = f s
160161 | otherwise = pure s
161162
163+-- | Old name for 'named'
162164ell :: Text -> Traversal' Element Element
163−ell = named
165+ell = named . CI.mk
164166
165167-- | Traverse elements which has the specified name.
166168el :: Name -> Traversal' Element Element
@@ -182,10 +184,11 @@ text = nodes . traverse . _Content
182184comment :: Traversal' Element Text
183185comment = nodes . traverse . _Comment
184186
187+-- | 'plate' traverses over its sub-elements.
185188instance Plated Element where
186189 plate = nodes . traverse . _Element
187190
188−-- | Combine two 'Traversal's just like XPath's slash.
191+-- | Combine two 'Traversal's just like XPath's slash. Identical to ('...').
189192--
190193-- @
191194-- l ./ m ≡ l . 'plate' . m