{-# LANGUAGE FlexibleContexts,
             FlexibleInstances,
             UndecidableInstances #-}

module Data.TH.Convert
       ( Convert(..) ) where

import Language.JavaScript.Interpret
import Language.JavaScript.SubType

class Convert a where
  convert :: a -> Primitive

instance Convert Double where
  convert = inj . Number

instance Convert Int where
  convert = inj . Number . fromIntegral

instance Convert Null where
  convert = inj

instance Convert Undefined where
  convert = inj

instance Convert Number where
  convert = inj

instance Convert String where
  convert = inj

instance Convert Bool where
  convert = inj