module EZCouch.JS where
import Prelude ()
import ClassyPrelude
import GHC.Generics
import Data.Aeson
import qualified Data.Text.Lazy as LText
class ToJS a where
toJS :: a -> Text
instance (ToJS a, ToJS b) =>
ToJS (a, b)
where
toJS (a, b) = "["
++ toJS a ++ ", "
++ toJS b ++ "]"
instance (ToJS a, ToJS b, ToJS c) =>
ToJS (a, b, c)
where
toJS (a, b, c) = "["
++ toJS a ++ ", "
++ toJS b ++ ", "
++ toJS c ++ "]"
instance (ToJS a, ToJS b, ToJS c, ToJS d) =>
ToJS (a, b, c, d)
where
toJS (a, b, c, d) = "["
++ toJS a ++ ", "
++ toJS b ++ ", "
++ toJS c ++ ", "
++ toJS d ++ "]"
instance (ToJS a, ToJS b, ToJS c, ToJS d, ToJS e) =>
ToJS (a, b, c, d, e)
where
toJS (a, b, c, d, e) = "["
++ toJS a ++ ", "
++ toJS b ++ ", "
++ toJS c ++ ", "
++ toJS d ++ ", "
++ toJS e ++ "]"
instance (ToJS a, ToJS b, ToJS c, ToJS d, ToJS e, ToJS f) =>
ToJS (a, b, c, d, e, f)
where
toJS (a, b, c, d, e, f) = "["
++ toJS a ++ ", "
++ toJS b ++ ", "
++ toJS c ++ ", "
++ toJS d ++ ", "
++ toJS e ++ ", "
++ toJS f ++ "]"
instance (ToJS a, ToJS b, ToJS c, ToJS d, ToJS e, ToJS f, ToJS g) =>
ToJS (a, b, c, d, e, f, g)
where
toJS (a, b, c, d, e, f, g) = "["
++ toJS a ++ ", "
++ toJS b ++ ", "
++ toJS c ++ ", "
++ toJS d ++ ", "
++ toJS e ++ ", "
++ toJS f ++ ", "
++ toJS g ++ "]"
newtype JSON a = JSON a
instance (ToJSON a) => ToJS (JSON a) where
toJS (JSON a) = LText.toStrict . decodeUtf8 . encode $ a