module Cloud.AWS.Lib.Parser.Unordered.Path
( ElementName (..)
, ElementPath
, (.=)
, (.-)
, tag
, end
, anytag
) where
import Data.String (IsString (..))
import Data.Text (Text)
import Data.Tree (Tree (..))
import Cloud.AWS.Lib.ToText (ToText (..))
data ElementName = TagName Text | AnyTag deriving (Eq)
instance Show ElementName where
show (TagName t) = show t
show AnyTag = "<any>"
instance IsString ElementName where
fromString = TagName . fromString
type ElementPath = Tree ElementName
infixr 1 .=
(.=) :: ElementName -> [ElementPath] -> ElementPath
name .= paths = Node name paths
infixr 1 .-
(.-) :: ElementName -> ElementPath -> ElementPath
name .- path = Node name [path]
tag :: ToText a => a -> ElementName
tag a = TagName $ toText a
end :: ElementName -> ElementPath
end name = Node name []
anytag :: ElementName
anytag = AnyTag