, keys
-- * Element functions
, nameOf
- , maxNameLen
, findByName
) where
nameOf :: (T.Element a) => Container a -> Key -> String
nameOf c k = T.nameOf $ find k c
--- | Compute the maximum name length in an Element Container.
-maxNameLen :: (T.Element a) => Container a -> Int
-maxNameLen = maximum . map (length . T.nameOf) . elems
-
-- | Find an element by name in a Container; this is a very slow function.
findByName :: (T.Element a, Monad m) =>
Container a -> String -> m a
findByName c n =
let all_elems = elems c
- result = filter ((== n) . T.nameOf) all_elems
+ result = filter ((n `elem`) . T.allNames) all_elems
in case result of
[item] -> return item
_ -> fail $ "Wrong number of elems found with name " ++ n