module Hydra.Langs.Json.Language where import Hydra.Core import Hydra.Coders import Hydra.Strip import Hydra.Mantle import qualified Data.Set as S jsonLanguage :: Language jsonLanguage :: Language jsonLanguage = LanguageName -> LanguageConstraints -> Language Language (String -> LanguageName LanguageName String "hydra/langs/json") (LanguageConstraints -> Language) -> LanguageConstraints -> Language forall a b. (a -> b) -> a -> b $ LanguageConstraints { languageConstraintsEliminationVariants :: Set EliminationVariant languageConstraintsEliminationVariants = Set EliminationVariant forall a. Set a S.empty, languageConstraintsLiteralVariants :: Set LiteralVariant languageConstraintsLiteralVariants = [LiteralVariant] -> Set LiteralVariant forall a. Ord a => [a] -> Set a S.fromList [ LiteralVariant LiteralVariantBoolean, LiteralVariant LiteralVariantFloat, LiteralVariant LiteralVariantInteger, LiteralVariant LiteralVariantString], languageConstraintsFloatTypes :: Set FloatType languageConstraintsFloatTypes = [FloatType] -> Set FloatType forall a. Ord a => [a] -> Set a S.fromList [FloatType FloatTypeBigfloat], languageConstraintsFunctionVariants :: Set FunctionVariant languageConstraintsFunctionVariants = Set FunctionVariant forall a. Set a S.empty, languageConstraintsIntegerTypes :: Set IntegerType languageConstraintsIntegerTypes = [IntegerType] -> Set IntegerType forall a. Ord a => [a] -> Set a S.fromList [IntegerType IntegerTypeBigint], languageConstraintsTermVariants :: Set TermVariant languageConstraintsTermVariants = [TermVariant] -> Set TermVariant forall a. Ord a => [a] -> Set a S.fromList [ TermVariant TermVariantList, TermVariant TermVariantLiteral, TermVariant TermVariantMap, TermVariant TermVariantOptional, TermVariant TermVariantRecord], languageConstraintsTypeVariants :: Set TypeVariant languageConstraintsTypeVariants = [TypeVariant] -> Set TypeVariant forall a. Ord a => [a] -> Set a S.fromList [ TypeVariant TypeVariantList, TypeVariant TypeVariantLiteral, TypeVariant TypeVariantMap, TypeVariant TypeVariantOptional, TypeVariant TypeVariantRecord], languageConstraintsTypes :: Type -> Bool languageConstraintsTypes = \Type typ -> case Type -> Type stripType Type typ of TypeOptional (TypeOptional Type _) -> Bool False Type _ -> Bool True }