module HaskellWorks.Data.Xml.Lens where

import Control.Lens
import Data.Text                   (Text)
import HaskellWorks.Data.Xml.Value

isTagNamed :: Text -> Value -> Bool
isTagNamed :: Text -> Value -> Bool
isTagNamed Text
a (XmlElement Text
b [(Text, Text)]
_ [Value]
_) | Text
a Text -> Text -> Bool
forall a. Eq a => a -> a -> Bool
== Text
b  = Bool
True
isTagNamed Text
_     Value
_              = Bool
False

tagNamed :: (Applicative f, Choice p) => Text -> Optic' p f Value Value
tagNamed :: forall (f :: * -> *) (p :: * -> * -> *).
(Applicative f, Choice p) =>
Text -> Optic' p f Value Value
tagNamed = (Value -> Bool) -> Optic' p f Value Value
forall (p :: * -> * -> *) (f :: * -> *) a.
(Choice p, Applicative f) =>
(a -> Bool) -> Optic' p f a a
filtered ((Value -> Bool) -> Optic' p f Value Value)
-> (Text -> Value -> Bool) -> Text -> Optic' p f Value Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Value -> Bool
isTagNamed