
module Binary where

import Control.Monad
import Data.Binary
import Data.Binary.Get
import Data.Binary.Put

import Parse

instance Binary WikiText where
    get = do tag <- getWord8
             case tag of
                 0 -> liftM Text get
                 1 -> liftM2 Link get get
                 2 -> liftM2 Template get get
    put (Text s) = putWord8 0 >> put s
    put (Link a b) = putWord8 1 >> put a >> put b
    put (Template s args) = putWord8 2 >> put s >> put args

