module Mischief.Assets.Internal.Kdl.Collection where import Data.Data import Data.Map (Map) import Data.Map qualified as Map import Data.Maybe import Data.Text (Text) import KDL qualified import Mischief.ECS.Utils newtype KdlCollection a = KdlCollection (Map Text [a]) deriving (Int -> KdlCollection a -> ShowS [KdlCollection a] -> ShowS KdlCollection a -> String (Int -> KdlCollection a -> ShowS) -> (KdlCollection a -> String) -> ([KdlCollection a] -> ShowS) -> Show (KdlCollection a) forall a. Show a => Int -> KdlCollection a -> ShowS forall a. Show a => [KdlCollection a] -> ShowS forall a. Show a => KdlCollection a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall a. Show a => Int -> KdlCollection a -> ShowS showsPrec :: Int -> KdlCollection a -> ShowS $cshow :: forall a. Show a => KdlCollection a -> String show :: KdlCollection a -> String $cshowList :: forall a. Show a => [KdlCollection a] -> ShowS showList :: [KdlCollection a] -> ShowS Show) colGetU :: Text -> KdlCollection a -> a colGetU :: forall a. Text -> KdlCollection a -> a colGetU = (Maybe a -> a forall (f :: * -> *) a. (HasCallStack, Unwrappable f) => f a -> a unwrap (Maybe a -> a) -> (KdlCollection a -> Maybe a) -> KdlCollection a -> a forall b c a. (b -> c) -> (a -> b) -> a -> c .) ((KdlCollection a -> Maybe a) -> KdlCollection a -> a) -> (Text -> KdlCollection a -> Maybe a) -> Text -> KdlCollection a -> a forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> KdlCollection a -> Maybe a forall a. Text -> KdlCollection a -> Maybe a colGet colGet :: Text -> KdlCollection a -> Maybe a colGet :: forall a. Text -> KdlCollection a -> Maybe a colGet Text a KdlCollection a b = case Text -> KdlCollection a -> [a] forall a. Text -> KdlCollection a -> [a] colGetMany Text a KdlCollection a b of (a x : [a] _) -> a -> Maybe a forall a. a -> Maybe a Just a x [a] _ -> Maybe a forall a. Maybe a Nothing colGetMany :: Text -> KdlCollection a -> [a] colGetMany :: forall a. Text -> KdlCollection a -> [a] colGetMany Text t (KdlCollection Map Text [a] m) = [a] -> Maybe [a] -> [a] forall a. a -> Maybe a -> a fromMaybe [] (Text -> Map Text [a] -> Maybe [a] forall k a. Ord k => k -> Map k a -> Maybe a Map.lookup Text t Map Text [a] m) colDecodeWith :: (Typeable a) => KDL.NodeDecoder a -> KDL.NodeListDecoder (KdlCollection a) colDecodeWith :: forall a. Typeable a => NodeDecoder a -> NodeListDecoder (KdlCollection a) colDecodeWith = (Map Text [a] -> KdlCollection a forall a. Map Text [a] -> KdlCollection a KdlCollection (Map Text [a] -> KdlCollection a) -> DecodeArrow NodeList () (Map Text [a]) -> DecodeArrow NodeList () (KdlCollection a) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$>) (DecodeArrow NodeList () (Map Text [a]) -> DecodeArrow NodeList () (KdlCollection a)) -> (NodeDecoder a -> DecodeArrow NodeList () (Map Text [a])) -> NodeDecoder a -> DecodeArrow NodeList () (KdlCollection a) forall b c a. (b -> c) -> (a -> b) -> a -> c . NodeDecoder a -> DecodeArrow NodeList () (Map Text [a]) forall a b. Typeable b => NodeDecodeArrow a b -> NodeListDecodeArrow a (Map Text [b]) KDL.remainingNodesWith