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 f x = case x of
  DictionaryElement k v y -> do
    putText k
    f v
    putDictionary f y
  DictionaryEnd y -> putText y