module Rattletrap.Encode.Dictionary ( putDictionary ) where import Rattletrap.Encode.Str import Rattletrap.Type.Dictionary import qualified Data.Binary as Binary putDictionary :: (a -> Binary.Put) -> Dictionary a -> Binary.Put putDictionary :: (a -> Put) -> Dictionary a -> Put putDictionary a -> Put f Dictionary a x = case Dictionary a x of DictionaryElement Str k a v Dictionary a y -> do Str -> Put putText Str k a -> Put f a v (a -> Put) -> Dictionary a -> Put forall a. (a -> Put) -> Dictionary a -> Put putDictionary a -> Put f Dictionary a y DictionaryEnd Str y -> Str -> Put putText Str y