module Rattletrap.Type.Attribute.Boolean where import qualified Rattletrap.BitGet as BitGet import qualified Rattletrap.BitPut as BitPut import qualified Rattletrap.Schema as Schema import qualified Rattletrap.Utility.Json as Json newtype Boolean = Boolean { Boolean -> Bool value :: Bool } deriving (Boolean -> Boolean -> Bool (Boolean -> Boolean -> Bool) -> (Boolean -> Boolean -> Bool) -> Eq Boolean forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Boolean -> Boolean -> Bool == :: Boolean -> Boolean -> Bool $c/= :: Boolean -> Boolean -> Bool /= :: Boolean -> Boolean -> Bool Eq, Int -> Boolean -> ShowS [Boolean] -> ShowS Boolean -> String (Int -> Boolean -> ShowS) -> (Boolean -> String) -> ([Boolean] -> ShowS) -> Show Boolean forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Boolean -> ShowS showsPrec :: Int -> Boolean -> ShowS $cshow :: Boolean -> String show :: Boolean -> String $cshowList :: [Boolean] -> ShowS showList :: [Boolean] -> ShowS Show) instance Json.FromJSON Boolean where parseJSON :: Value -> Parser Boolean parseJSON = (Bool -> Boolean) -> Parser Bool -> Parser Boolean forall a b. (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Bool -> Boolean Boolean (Parser Bool -> Parser Boolean) -> (Value -> Parser Bool) -> Value -> Parser Boolean forall b c a. (b -> c) -> (a -> b) -> a -> c . Value -> Parser Bool forall a. FromJSON a => Value -> Parser a Json.parseJSON instance Json.ToJSON Boolean where toJSON :: Boolean -> Value toJSON = Bool -> Value forall a. ToJSON a => a -> Value Json.toJSON (Bool -> Value) -> (Boolean -> Bool) -> Boolean -> Value forall b c a. (b -> c) -> (a -> b) -> a -> c . Boolean -> Bool value schema :: Schema.Schema schema :: Schema schema = String -> Value -> Schema Schema.named String "attribute-boolean" (Value -> Schema) -> Value -> Schema forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Schema.boolean bitPut :: Boolean -> BitPut.BitPut bitPut :: Boolean -> BitPut bitPut Boolean booleanAttribute = Bool -> BitPut BitPut.bool (Boolean -> Bool value Boolean booleanAttribute) bitGet :: BitGet.BitGet Boolean bitGet :: BitGet Boolean bitGet = String -> BitGet Boolean -> BitGet Boolean forall a. String -> BitGet a -> BitGet a BitGet.label String "Boolean" (BitGet Boolean -> BitGet Boolean) -> BitGet Boolean -> BitGet Boolean forall a b. (a -> b) -> a -> b $ do Bool value <- String -> BitGet Bool -> BitGet Bool forall a. String -> BitGet a -> BitGet a BitGet.label String "value" BitGet Bool BitGet.bool Boolean -> BitGet Boolean forall a. a -> Get BitString Identity a forall (f :: * -> *) a. Applicative f => a -> f a pure Boolean {Bool value :: Bool value :: Bool value}