module Patrol.Type.Platform where

import qualified Data.Aeson as Aeson

data Platform
  = As3
  | C
  | Cfml
  | Cocoa
  | Csharp
  | Elixir
  | Haskell
  | Go
  | Groovy
  | Java
  | Javascript
  | Native
  | Node
  | Objc
  | Other
  | Perl
  | Php
  | Python
  | Ruby
  deriving (Platform -> Platform -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Platform -> Platform -> Bool
$c/= :: Platform -> Platform -> Bool
== :: Platform -> Platform -> Bool
$c== :: Platform -> Platform -> Bool
Eq, Int -> Platform -> ShowS
[Platform] -> ShowS
Platform -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Platform] -> ShowS
$cshowList :: [Platform] -> ShowS
show :: Platform -> String
$cshow :: Platform -> String
showsPrec :: Int -> Platform -> ShowS
$cshowsPrec :: Int -> Platform -> ShowS
Show)

instance Aeson.ToJSON Platform where
  toJSON :: Platform -> Value
toJSON Platform
platform = forall a. ToJSON a => a -> Value
Aeson.toJSON forall a b. (a -> b) -> a -> b
$ case Platform
platform of
    Platform
As3 -> String
"as3"
    Platform
C -> String
"c"
    Platform
Cfml -> String
"cfml"
    Platform
Cocoa -> String
"cocoa"
    Platform
Csharp -> String
"csharp"
    Platform
Elixir -> String
"elixir"
    Platform
Haskell -> String
"haskell"
    Platform
Go -> String
"go"
    Platform
Groovy -> String
"groovy"
    Platform
Java -> String
"java"
    Platform
Javascript -> String
"javascript"
    Platform
Native -> String
"native"
    Platform
Node -> String
"node"
    Platform
Objc -> String
"objc"
    Platform
Other -> String
"other"
    Platform
Perl -> String
"perl"
    Platform
Php -> String
"php"
    Platform
Python -> String
"python"
    Platform
Ruby -> String
"ruby"