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