-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Jsonnet implementaton in pure Haskell -- -- Please see the README on GitHub at -- https://github.com/moleike/jsonnet-haskell#readme @package jsonnet @version 0.3.1.1 -- | Annotated trees, based on fixplate module Language.Jsonnet.Annotate type AnnF f a = Product (Const a) f -- | Annotated fixed-point type. Equivalent to CoFree f a type Ann f a = Fix (AnnF f a) pattern AnnF :: forall a1 g a2. g a2 -> a1 -> Product (Const a1 :: Type -> Type) g a2 annMap :: Functor f => (a -> b) -> Ann f a -> Ann f b forget :: Functor f => Ann f a -> Fix f attrib :: Ann f a -> a inherit :: Functor f => (Fix f -> a -> (b, a)) -> a -> Fix f -> Ann f b annZip :: Functor f => Fix (AnnF (AnnF f a) b) -> Ann f (a, b) module Language.Jsonnet.Parser.SrcSpan data SrcSpan SrcSpan :: SourcePos -> SourcePos -> SrcSpan [spanBegin] :: SrcSpan -> SourcePos [spanEnd] :: SrcSpan -> SourcePos class HasSrcSpan a srcSpan :: HasSrcSpan a => a -> SrcSpan instance Language.Jsonnet.Parser.SrcSpan.HasSrcSpan Language.Jsonnet.Parser.SrcSpan.SrcSpan instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Parser.SrcSpan.SrcSpan instance Data.Binary.Class.Binary Text.Megaparsec.Pos.SourcePos instance Data.Binary.Class.Binary Text.Megaparsec.Pos.Pos instance Data.Binary.Class.Binary Language.Jsonnet.Parser.SrcSpan.SrcSpan instance Unbound.Generics.LocallyNameless.Subst.Subst b Language.Jsonnet.Parser.SrcSpan.SrcSpan instance GHC.Base.Semigroup Language.Jsonnet.Parser.SrcSpan.SrcSpan instance Data.Data.Data Language.Jsonnet.Parser.SrcSpan.SrcSpan instance GHC.Generics.Generic Language.Jsonnet.Parser.SrcSpan.SrcSpan instance GHC.Read.Read Language.Jsonnet.Parser.SrcSpan.SrcSpan instance GHC.Show.Show Language.Jsonnet.Parser.SrcSpan.SrcSpan instance GHC.Classes.Eq Language.Jsonnet.Parser.SrcSpan.SrcSpan instance GHC.Classes.Ord Language.Jsonnet.Parser.SrcSpan.SrcSpan module Language.Jsonnet.Common data Literal Null :: Literal Bool :: Bool -> Literal String :: Text -> Literal Number :: Scientific -> Literal data Prim UnyOp :: UnyOp -> Prim BinOp :: BinOp -> Prim Cond :: Prim data BinOp Add :: BinOp Sub :: BinOp Mul :: BinOp Div :: BinOp Mod :: BinOp Lt :: BinOp Le :: BinOp Gt :: BinOp Ge :: BinOp Eq :: BinOp Ne :: BinOp And :: BinOp Or :: BinOp Xor :: BinOp ShiftL :: BinOp ShiftR :: BinOp LAnd :: BinOp LOr :: BinOp In :: BinOp Lookup :: BinOp data UnyOp Compl :: UnyOp LNot :: UnyOp Plus :: UnyOp Minus :: UnyOp Err :: UnyOp data Strictness Strict :: Strictness Lazy :: Strictness data Arg a Pos :: a -> Arg a Named :: String -> a -> Arg a data Args a Args :: [Arg a] -> Strictness -> Args a [args] :: Args a -> [Arg a] [strictness] :: Args a -> Strictness data Assert a Assert :: a -> Maybe a -> a -> Assert a [cond] :: Assert a -> a [msg] :: Assert a -> Maybe a [expr] :: Assert a -> a data CompSpec a CompSpec :: String -> a -> Maybe a -> CompSpec a [var] :: CompSpec a -> String [forspec] :: CompSpec a -> a [ifspec] :: CompSpec a -> Maybe a data StackFrame a StackFrame :: Name a -> SrcSpan -> StackFrame a [name] :: StackFrame a -> Name a [span] :: StackFrame a -> SrcSpan newtype Backtrace a Backtrace :: [StackFrame a] -> Backtrace a data Visibility Visible :: Visibility Hidden :: Visibility Forced :: Visibility class HasVisibility a visible :: HasVisibility a => a -> Bool forced :: HasVisibility a => a -> Bool hidden :: HasVisibility a => a -> Bool instance GHC.Show.Show (Language.Jsonnet.Common.StackFrame a) instance GHC.Classes.Eq (Language.Jsonnet.Common.StackFrame a) instance GHC.Show.Show (Language.Jsonnet.Common.Backtrace a) instance GHC.Classes.Eq (Language.Jsonnet.Common.Backtrace a) instance Data.Data.Data Language.Jsonnet.Common.Visibility instance GHC.Generics.Generic Language.Jsonnet.Common.Visibility instance GHC.Show.Show Language.Jsonnet.Common.Visibility instance GHC.Read.Read Language.Jsonnet.Common.Visibility instance GHC.Classes.Eq Language.Jsonnet.Common.Visibility instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.Visibility instance Data.Binary.Class.Binary Language.Jsonnet.Common.Visibility instance Data.Functor.Classes.Show1 Language.Jsonnet.Common.CompSpec instance Unbound.Generics.LocallyNameless.Alpha.Alpha a => Unbound.Generics.LocallyNameless.Alpha.Alpha (Language.Jsonnet.Common.CompSpec a) instance Data.Traversable.Traversable Language.Jsonnet.Common.CompSpec instance Data.Foldable.Foldable Language.Jsonnet.Common.CompSpec instance GHC.Base.Functor Language.Jsonnet.Common.CompSpec instance GHC.Generics.Generic (Language.Jsonnet.Common.CompSpec a) instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Common.CompSpec a) instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Common.CompSpec a) instance GHC.Read.Read a => GHC.Read.Read (Language.Jsonnet.Common.CompSpec a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Jsonnet.Common.CompSpec a) instance Data.Functor.Classes.Show1 Language.Jsonnet.Common.Assert instance Data.Traversable.Traversable Language.Jsonnet.Common.Assert instance Data.Foldable.Foldable Language.Jsonnet.Common.Assert instance GHC.Base.Functor Language.Jsonnet.Common.Assert instance GHC.Generics.Generic (Language.Jsonnet.Common.Assert a) instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Common.Assert a) instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Common.Assert a) instance GHC.Read.Read a => GHC.Read.Read (Language.Jsonnet.Common.Assert a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Jsonnet.Common.Assert a) instance Unbound.Generics.LocallyNameless.Alpha.Alpha a => Unbound.Generics.LocallyNameless.Alpha.Alpha (Language.Jsonnet.Common.Assert a) instance Data.Functor.Classes.Show1 Language.Jsonnet.Common.Args instance Unbound.Generics.LocallyNameless.Alpha.Alpha a => Unbound.Generics.LocallyNameless.Alpha.Alpha (Language.Jsonnet.Common.Args a) instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Language.Jsonnet.Common.Args a) instance Data.Traversable.Traversable Language.Jsonnet.Common.Args instance Data.Foldable.Foldable Language.Jsonnet.Common.Args instance GHC.Base.Functor Language.Jsonnet.Common.Args instance GHC.Generics.Generic (Language.Jsonnet.Common.Args a) instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Common.Args a) instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Common.Args a) instance GHC.Read.Read a => GHC.Read.Read (Language.Jsonnet.Common.Args a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Jsonnet.Common.Args a) instance Data.Functor.Classes.Show1 Language.Jsonnet.Common.Arg instance Unbound.Generics.LocallyNameless.Alpha.Alpha a => Unbound.Generics.LocallyNameless.Alpha.Alpha (Language.Jsonnet.Common.Arg a) instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Language.Jsonnet.Common.Arg a) instance Data.Data.Data Language.Jsonnet.Common.BinOp instance GHC.Generics.Generic Language.Jsonnet.Common.BinOp instance GHC.Classes.Eq Language.Jsonnet.Common.BinOp instance GHC.Show.Show Language.Jsonnet.Common.BinOp instance Data.Data.Data Language.Jsonnet.Common.UnyOp instance GHC.Generics.Generic Language.Jsonnet.Common.UnyOp instance GHC.Classes.Eq Language.Jsonnet.Common.UnyOp instance GHC.Show.Show Language.Jsonnet.Common.UnyOp instance Data.Data.Data Language.Jsonnet.Common.Prim instance GHC.Generics.Generic Language.Jsonnet.Common.Prim instance GHC.Classes.Eq Language.Jsonnet.Common.Prim instance GHC.Show.Show Language.Jsonnet.Common.Prim instance Data.Data.Data Language.Jsonnet.Common.Strictness instance GHC.Generics.Generic Language.Jsonnet.Common.Strictness instance GHC.Show.Show Language.Jsonnet.Common.Strictness instance GHC.Read.Read Language.Jsonnet.Common.Strictness instance GHC.Classes.Eq Language.Jsonnet.Common.Strictness instance Data.Traversable.Traversable Language.Jsonnet.Common.Arg instance Data.Foldable.Foldable Language.Jsonnet.Common.Arg instance GHC.Base.Functor Language.Jsonnet.Common.Arg instance GHC.Generics.Generic1 Language.Jsonnet.Common.Arg instance GHC.Generics.Generic (Language.Jsonnet.Common.Arg a) instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Common.Arg a) instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Common.Arg a) instance GHC.Read.Read a => GHC.Read.Read (Language.Jsonnet.Common.Arg a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Jsonnet.Common.Arg a) instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.Strictness instance Data.Binary.Class.Binary Language.Jsonnet.Common.Strictness instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.Prim instance Data.Binary.Class.Binary Language.Jsonnet.Common.Prim instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.UnyOp instance Data.Binary.Class.Binary Language.Jsonnet.Common.UnyOp instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.BinOp instance Data.Binary.Class.Binary Language.Jsonnet.Common.BinOp instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.Literal instance Data.Binary.Class.Binary Language.Jsonnet.Common.Literal instance Unbound.Generics.LocallyNameless.Subst.Subst a Language.Jsonnet.Common.Literal instance Data.Data.Data Language.Jsonnet.Common.Literal instance GHC.Generics.Generic Language.Jsonnet.Common.Literal instance GHC.Classes.Ord Language.Jsonnet.Common.Literal instance GHC.Classes.Eq Language.Jsonnet.Common.Literal instance GHC.Show.Show Language.Jsonnet.Common.Literal module Language.Jsonnet.Core type Param a = (Name a, Embed a) data CField CField :: Core -> Core -> Visibility -> CField [fieldKey] :: CField -> Core [fieldVal] :: CField -> Core [fieldVis] :: CField -> Visibility mkField :: Core -> Core -> Visibility -> CField data Comp ArrC :: Bind (Name Core) (Core, Maybe Core) -> Comp ObjC :: Bind (Name Core) (CField, Maybe Core) -> Comp type Lam = Bind (Rec [Param Core]) Core type Let = Bind (Rec [(Name Core, Embed Core)]) Core data Core [CLoc] :: SrcSpan -> Core -> Core [CLit] :: Literal -> Core [CVar] :: Name Core -> Core [CLam] :: Lam -> Core [CPrim] :: Prim -> Core [CApp] :: Core -> Args Core -> Core [CLet] :: Let -> Core [CObj] :: [CField] -> Core [CArr] :: [Core] -> Core [CComp] :: Comp -> Core -> Core instance Data.Binary.Class.Binary Language.Jsonnet.Core.CField instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Core.CField instance GHC.Generics.Generic Language.Jsonnet.Core.CField instance GHC.Show.Show Language.Jsonnet.Core.CField instance Data.Binary.Class.Binary Language.Jsonnet.Core.Comp instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Core.Comp instance GHC.Generics.Generic Language.Jsonnet.Core.Comp instance GHC.Show.Show Language.Jsonnet.Core.Comp instance Data.Binary.Class.Binary Language.Jsonnet.Core.Core instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Core.Core instance GHC.Generics.Generic Language.Jsonnet.Core.Core instance GHC.Show.Show Language.Jsonnet.Core.Core instance Data.String.IsString (Unbound.Generics.LocallyNameless.Name.Name Language.Jsonnet.Core.Core) instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Unbound.Generics.LocallyNameless.Name.Name a) instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Unbound.Generics.LocallyNameless.Rec.Rec a) instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Unbound.Generics.LocallyNameless.Embed.Embed a) instance (Data.Binary.Class.Binary a, Data.Binary.Class.Binary b) => Data.Binary.Class.Binary (Unbound.Generics.LocallyNameless.Bind.Bind a b) module Language.Jsonnet.Error data Error ParserError :: ParserError -> Error CheckError :: CheckError -> Maybe SrcSpan -> Error EvalError :: EvalError -> Backtrace Core -> Error data EvalError TypeMismatch :: Text -> Text -> EvalError [expected] :: EvalError -> Text [actual] :: EvalError -> Text InvalidKey :: Doc -> EvalError DuplicateKey :: Doc -> EvalError NoSuchKey :: Doc -> EvalError InvalidIndex :: Doc -> EvalError IndexOutOfBounds :: Scientific -> EvalError DivByZero :: EvalError VarNotFound :: Doc -> EvalError AssertionFailed :: Doc -> EvalError TooManyArgs :: Int -> EvalError ParamNotBound :: Doc -> EvalError BadParam :: Doc -> EvalError StdError :: Doc -> EvalError RuntimeError :: Doc -> EvalError ManifestError :: Doc -> EvalError data ParserError ParseError :: ParseErrorBundle Text Void -> ParserError ImportError :: IOError -> Maybe SrcSpan -> ParserError data CheckError DuplicateParam :: String -> CheckError PosAfterNamedParam :: CheckError DuplicateBinding :: String -> CheckError instance GHC.Show.Show Language.Jsonnet.Error.EvalError instance GHC.Show.Show Language.Jsonnet.Error.ParserError instance GHC.Classes.Eq Language.Jsonnet.Error.ParserError instance GHC.Show.Show Language.Jsonnet.Error.CheckError instance GHC.Show.Show Language.Jsonnet.Error.Error instance GHC.Exception.Type.Exception Language.Jsonnet.Error.EvalError module Language.Jsonnet.Eval.Monad type Ctx a = Map (Name Core) a -- | Simulate a call-stack to report stack traces data CallStack CallStack :: [Maybe SrcSpan] -> [Name Core] -> CallStack -- | source location of call-sites [_spans] :: CallStack -> [Maybe SrcSpan] -- | names of called functions [_scopes] :: CallStack -> [Name Core] spans :: Lens' CallStack [Maybe SrcSpan] scopes :: Lens' CallStack [Name Core] emptyStack :: CallStack data EvalState a EvalState :: Ctx a -> CallStack -> Maybe SrcSpan -> EvalState a -- | binding local variables to their values [_ctx] :: EvalState a -> Ctx a -- | call-stack simulation [_callStack] :: EvalState a -> CallStack -- | source span of expression being evaluated [_currentPos] :: EvalState a -> Maybe SrcSpan currentPos :: forall a_aZ30. Lens' (EvalState a_aZ30) (Maybe SrcSpan) ctx :: forall a_aZ30 a_aZ8Y. Lens (EvalState a_aZ30) (EvalState a_aZ8Y) (Ctx a_aZ30) (Ctx a_aZ8Y) callStack :: forall a_aZ30. Lens' (EvalState a_aZ30) CallStack newtype EvalM a b EvalM :: ExceptT Error (ReaderT (EvalState a) (FreshMT IO)) b -> EvalM a b [unEval] :: EvalM a b -> ExceptT Error (ReaderT (EvalState a) (FreshMT IO)) b runEvalM :: Ctx a -> EvalM a b -> IO (Either Error b) throwE :: EvalError -> EvalM a b extendEnv :: Ctx a -> EvalM a b -> EvalM a b withEnv :: Ctx a -> EvalM a b -> EvalM a b pushStackFrame :: (Name Core, Maybe SrcSpan) -> EvalM a b -> EvalM a b getBacktrace :: EvalM a (Backtrace Core) instance Unbound.Generics.LocallyNameless.Fresh.Fresh (Language.Jsonnet.Eval.Monad.EvalM a) instance Control.Monad.Fix.MonadFix (Language.Jsonnet.Eval.Monad.EvalM a) instance Control.Monad.Fail.MonadFail (Language.Jsonnet.Eval.Monad.EvalM a) instance Control.Monad.Catch.MonadMask (Language.Jsonnet.Eval.Monad.EvalM a) instance Control.Monad.Catch.MonadCatch (Language.Jsonnet.Eval.Monad.EvalM a) instance Control.Monad.Catch.MonadThrow (Language.Jsonnet.Eval.Monad.EvalM a) instance Control.Monad.Error.Class.MonadError Language.Jsonnet.Error.Error (Language.Jsonnet.Eval.Monad.EvalM a) instance Control.Monad.Reader.Class.MonadReader (Language.Jsonnet.Eval.Monad.EvalState a) (Language.Jsonnet.Eval.Monad.EvalM a) instance Control.Monad.IO.Class.MonadIO (Language.Jsonnet.Eval.Monad.EvalM a) instance GHC.Base.Monad (Language.Jsonnet.Eval.Monad.EvalM a) instance GHC.Base.Applicative (Language.Jsonnet.Eval.Monad.EvalM a) instance GHC.Base.Functor (Language.Jsonnet.Eval.Monad.EvalM a) module Language.Jsonnet.Pretty ppNumber :: Scientific -> Doc ppJson :: Int -> Value -> Doc instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty (Unbound.Generics.LocallyNameless.Name.Name a) instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Data.Text.Internal.Text instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Data.Aeson.Types.Internal.Value instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Jsonnet.Parser.SrcSpan.SrcSpan instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Jsonnet.Error.ParserError instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Jsonnet.Error.CheckError instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Jsonnet.Error.EvalError instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty (Language.Jsonnet.Common.StackFrame a) instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty (Language.Jsonnet.Common.Backtrace a) instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Jsonnet.Error.Error module Language.Jsonnet.Syntax type Ident = String type Param a = (Ident, Maybe a) data EField a EField :: a -> a -> Visibility -> Bool -> EField a [key] :: EField a -> a [value] :: EField a -> a [visibility] :: EField a -> Visibility [override] :: EField a -> Bool data ExprF a ELit :: Literal -> ExprF a EIdent :: Ident -> ExprF a EFun :: [Param a] -> a -> ExprF a EApply :: a -> Args a -> ExprF a ELocal :: NonEmpty (Ident, a) -> a -> ExprF a -- | non-empty list of recursive bindings [bnds] :: ExprF a -> NonEmpty (Ident, a) -- | body expression [expr] :: ExprF a -> a EObj :: [(Ident, a)] -> [EField a] -> ExprF a [locals] :: ExprF a -> [(Ident, a)] [fields] :: ExprF a -> [EField a] EArr :: [a] -> ExprF a EErr :: a -> ExprF a ELookup :: a -> a -> ExprF a EIndex :: a -> a -> ExprF a EAssert :: Assert a -> ExprF a EIf :: a -> a -> ExprF a EIfElse :: a -> a -> a -> ExprF a ESlice :: a -> Maybe a -> Maybe a -> Maybe a -> ExprF a -- | body expression [expr] :: ExprF a -> a [start] :: ExprF a -> Maybe a [end] :: ExprF a -> Maybe a [step] :: ExprF a -> Maybe a EBinOp :: BinOp -> a -> a -> ExprF a EUnyOp :: UnyOp -> a -> ExprF a EArrComp :: a -> NonEmpty (CompSpec a) -> ExprF a -- | body expression [expr] :: ExprF a -> a [comp] :: ExprF a -> NonEmpty (CompSpec a) EObjComp :: EField a -> [(Ident, a)] -> NonEmpty (CompSpec a) -> ExprF a [field] :: ExprF a -> EField a [locals] :: ExprF a -> [(Ident, a)] [comp] :: ExprF a -> NonEmpty (CompSpec a) newtype Import Import :: FilePath -> Import type ExprF' = Sum ExprF (Const Import) mkImportF :: String -> ExprF' a mkNullF :: ExprF' a mkIntF :: Integral b => b -> ExprF' a mkFloatF :: Scientific -> ExprF' a mkStrF :: String -> ExprF' a mkBoolF :: Bool -> ExprF' a mkIdentF :: Ident -> ExprF' a mkFunF :: [Param a] -> a -> ExprF' a mkApplyF :: a -> Args a -> ExprF' a mkIfF :: a -> a -> ExprF' a mkIfElseF :: a -> a -> a -> ExprF' a mkLocalF :: NonEmpty (Ident, a) -> a -> ExprF' a mkLookupF :: a -> a -> ExprF' a mkIndexF :: a -> a -> ExprF' a mkSliceF :: a -> Maybe a -> Maybe a -> Maybe a -> ExprF' a mkObjectF :: [EField a] -> [(Ident, a)] -> ExprF' a mkArrayF :: [a] -> ExprF' a mkErrorF :: a -> ExprF' a mkAssertF :: a -> Maybe a -> a -> ExprF' a mkArrCompF :: a -> NonEmpty (CompSpec a) -> ExprF' a mkObjCompF :: EField a -> [(Ident, a)] -> NonEmpty (CompSpec a) -> ExprF' a instance GHC.Classes.Eq Language.Jsonnet.Syntax.Import instance GHC.Show.Show Language.Jsonnet.Syntax.Import instance Data.Functor.Classes.Show1 Language.Jsonnet.Syntax.ExprF instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Syntax.ExprF a) instance GHC.Generics.Generic (Language.Jsonnet.Syntax.ExprF a) instance Data.Traversable.Traversable Language.Jsonnet.Syntax.ExprF instance Data.Foldable.Foldable Language.Jsonnet.Syntax.ExprF instance GHC.Base.Functor Language.Jsonnet.Syntax.ExprF instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Syntax.ExprF a) instance Data.Functor.Classes.Show1 Language.Jsonnet.Syntax.EField instance Data.Traversable.Traversable Language.Jsonnet.Syntax.EField instance Data.Foldable.Foldable Language.Jsonnet.Syntax.EField instance GHC.Base.Functor Language.Jsonnet.Syntax.EField instance GHC.Generics.Generic (Language.Jsonnet.Syntax.EField a) instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Syntax.EField a) instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Syntax.EField a) instance GHC.Read.Read a => GHC.Read.Read (Language.Jsonnet.Syntax.EField a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Jsonnet.Syntax.EField a) instance Unbound.Generics.LocallyNameless.Alpha.Alpha a => Unbound.Generics.LocallyNameless.Alpha.Alpha (Language.Jsonnet.Syntax.EField a) module Language.Jsonnet.Desugar desugar :: Desugarer a => a -> Core instance Language.Jsonnet.Desugar.Desugarer (Language.Jsonnet.Annotate.Ann Language.Jsonnet.Syntax.ExprF ()) instance Language.Jsonnet.Desugar.Desugarer (Language.Jsonnet.Annotate.Ann Language.Jsonnet.Syntax.ExprF Language.Jsonnet.Parser.SrcSpan.SrcSpan) module Language.Jsonnet.Check type Check = ExceptT Error IO check :: Ann ExprF SrcSpan -> Check () module Language.Jsonnet.Syntax.Annotated -- | annotated syntax tree with resolved imports type Expr = Ann ExprF SrcSpan -- | annotated syntax tree with unresolved imports type Expr' = Ann ExprF' SrcSpan mkApply :: Expr' -> Args Expr' -> Expr' mkLookup :: Expr' -> Expr' -> Expr' mkIndex :: Expr' -> Expr' -> Expr' mkSlice :: Maybe Expr' -> Maybe Expr' -> Maybe Expr' -> Expr' -> Expr' mkBinOp :: BinOp -> Expr' -> Expr' -> Expr' mkUnyOp :: UnyOp -> Expr' -> Expr' -- | Parser for Jsonnet source code. module Language.Jsonnet.Parser parse :: MonadError Error m => FilePath -> Text -> m Expr' resolveImports :: (MonadError Error m, MonadIO m) => FilePath -> Expr' -> m Expr module Language.Jsonnet.TH liftText :: Text -> Q Exp liftDataWithText :: Data a => a -> Q Exp parse :: FilePath -> Text -> Q Exp parse0 :: FilePath -> Text -> Q Expr -- | compiles a Jsonnet program down to a Core expression stripped of -- annotations compile :: FilePath -> Text -> Q Exp instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Common.Arg a) instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Parser.SrcSpan.SrcSpan instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.Visibility instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Common.Args a) instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.Strictness instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.Literal instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.Prim instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.BinOp instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.UnyOp instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Syntax.EField a) instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Common.Assert a) instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Common.CompSpec a) instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Syntax.ExprF a) instance (Data.Typeable.Internal.Typeable a, Data.Typeable.Internal.Typeable f, Data.Typeable.Internal.Typeable g, Data.Data.Data (f a), Data.Data.Data (g a)) => Language.Haskell.TH.Syntax.Lift (Data.Functor.Product.Product f g a) instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Syntax.Annotated.Expr module Language.Jsonnet.Std.TH stdlibPath :: String mkStdlib :: Q Exp module Language.Jsonnet.TH.QQ jsonnet :: QuasiQuoter module Language.Jsonnet.Value type Eval = EvalM Value type Env = Ctx Value data Value VNull :: Value VBool :: !Bool -> Value VStr :: !Text -> Value VNum :: !Scientific -> Value VObj :: !Object -> Value VArr :: !Vector Value -> Value VThunk :: !Core -> !Env -> Value VIndir :: !Ref -> Value VPrim :: !Prim -> Value VClos :: !Lam -> !Env -> Value VFun :: !Fun -> Value data VField VField :: Value -> Value -> Value -> Visibility -> VField [fieldKey] :: VField -> Value [fieldValWHNF] :: VField -> Value [fieldVal] :: VField -> Value [fieldVis] :: VField -> Visibility type Fun = Value -> Eval Value type Object = HashMap Text VField data Cell Cell :: Value -> Bool -> Cell [cellVal] :: Cell -> Value [cellIsWHNF] :: Cell -> Bool type Ref = IORef Cell class HasValue a inj :: HasValue a => a -> Value proj :: HasValue a => Value -> Eval a mkCell :: Value -> Cell mkIndirV :: MonadIO m => Value -> m Value mkThunk :: Core -> Eval Value allocate :: MonadIO m => Value -> m (IORef Cell) instance GHC.Generics.Generic Language.Jsonnet.Value.VField instance GHC.Generics.Generic Language.Jsonnet.Value.Cell instance Language.Jsonnet.Value.HasValue Language.Jsonnet.Value.Value instance Language.Jsonnet.Common.HasVisibility Language.Jsonnet.Value.VField module Language.Jsonnet.Eval rnf :: Core -> Eval Value whnfV :: Value -> Eval Value whnf :: Core -> Eval Value mkValue :: Core -> Eval Value lookupVar :: Name Core -> Eval Value whnfLiteral :: Literal -> Value whnfArgs :: Args Core -> Eval [Arg Value] whnfApp :: Core -> Args Core -> Eval Value withStackFrame :: Core -> Eval a -> Eval a whnfClos :: Env -> Lam -> [Arg Value] -> Eval Value appDefaults :: [(Name Core, Core)] -> Core -> Eval Value splitArgs :: [Arg b1] -> [(Name a1, b2)] -> EvalM a2 ([(Name a1, b2)], [(Name a1, b1)], [(Name a1, b1)]) whnfPrim :: Prim -> [Arg Value] -> Eval Value whnfBinOp :: BinOp -> Value -> Value -> Eval Value whnfLogical :: HasValue a => (a -> Bool) -> Value -> Value -> Eval Value append :: Value -> Value -> Eval Text whnfUnyOp :: UnyOp -> Value -> Eval Value toString :: Value -> Eval Text whnfCond :: Value -> Value -> Value -> Eval Value whnfLookup :: Value -> Value -> Eval Value whnfIndir :: Ref -> Eval Value whnfLetrec :: Let -> Eval Value whnfObj :: [CField] -> Eval Value whnfField :: Env -> CField -> Eval (Maybe (Text, VField)) flattenArrays :: Vector (Vector Value) -> Vector Value whnfComp :: Comp -> Core -> Eval Value -- | Right-biased union of two objects, i.e. '{x : 1} + {x : 2} == {x : 2}' -- with OO-like self and super support via value -- recursion (knot-tying) mergeWith :: Object -> Object -> Eval Value visibleKeys :: Object -> HashMap Text Value liftMaybe :: EvalError -> Maybe a -> Eval a manifest :: Value -> Eval Value objectFieldsEx :: Object -> Bool -> [Text] objectHasEx :: Object -> Text -> Bool -> Bool primitiveEquals :: Value -> Value -> Eval Bool equals :: Value -> Value -> Eval Bool allM :: Monad m => (a -> m Bool) -> [a] -> m Bool liftF :: (HasValue a, HasValue b) => (a -> b) -> Value -> Eval Value liftF2 :: (HasValue a, HasValue b, HasValue c) => (a -> b -> c) -> Value -> Value -> Eval Value proj' :: HasValue a => Value -> Eval a throwTypeMismatch :: Text -> Value -> Eval a showTy :: Value -> Eval Text instance Language.Jsonnet.Value.HasValue GHC.Types.Bool instance Language.Jsonnet.Value.HasValue Data.Text.Internal.Text instance Language.Jsonnet.Value.HasValue [GHC.Types.Char] instance Language.Jsonnet.Value.HasValue Data.ByteString.Internal.ByteString instance Language.Jsonnet.Value.HasValue Data.Scientific.Scientific instance Language.Jsonnet.Value.HasValue GHC.Types.Double instance GHC.Real.Integral a => Language.Jsonnet.Value.HasValue a instance Language.Jsonnet.Value.HasValue a => Language.Jsonnet.Value.HasValue (GHC.Maybe.Maybe a) instance Language.Jsonnet.Value.HasValue Language.Jsonnet.Value.Object instance Language.Jsonnet.Value.HasValue a => Language.Jsonnet.Value.HasValue (Data.Vector.Vector a) instance Language.Jsonnet.Value.HasValue a => Language.Jsonnet.Value.HasValue [a] instance (Language.Jsonnet.Value.HasValue a, Language.Jsonnet.Value.HasValue b) => Language.Jsonnet.Value.HasValue (a -> b) instance (Language.Jsonnet.Value.HasValue a, Language.Jsonnet.Value.HasValue b, Language.Jsonnet.Value.HasValue c) => Language.Jsonnet.Value.HasValue (a -> b -> c) instance (Language.Jsonnet.Value.HasValue a, Language.Jsonnet.Value.HasValue b) => Language.Jsonnet.Value.HasValue (a -> Language.Jsonnet.Value.Eval b) instance (Language.Jsonnet.Value.HasValue a, Language.Jsonnet.Value.HasValue b, Language.Jsonnet.Value.HasValue c) => Language.Jsonnet.Value.HasValue (a -> b -> Language.Jsonnet.Value.Eval c) module Language.Jsonnet.Std.Lib -- | Jsonnet standard library built-in methods std :: Value objectHasEx :: Object -> Text -> Bool -> Bool instance Data.Aeson.Types.FromJSON.FromJSON Language.Jsonnet.Value.Value module Language.Jsonnet data JsonnetM a interpret :: Config -> Text -> IO (Either Error Value) newtype Config Config :: FilePath -> Config [fname] :: Config -> FilePath data Value VNull :: Value VBool :: !Bool -> Value VStr :: !Text -> Value VNum :: !Scientific -> Value VObj :: !Object -> Value VArr :: !Vector Value -> Value VThunk :: !Core -> !Env -> Value VIndir :: !Ref -> Value VPrim :: !Prim -> Value VClos :: !Lam -> !Env -> Value VFun :: !Fun -> Value runJsonnetM :: Config -> JsonnetM a -> IO (Either Error a) parse :: Text -> JsonnetM Expr -- | evaluate a Core expression with the implicit stdlib evaluate :: Core -> JsonnetM Value desugar :: Expr -> JsonnetM Core instance Control.Monad.Fail.MonadFail Language.Jsonnet.JsonnetM instance Control.Monad.Catch.MonadMask Language.Jsonnet.JsonnetM instance Control.Monad.Catch.MonadCatch Language.Jsonnet.JsonnetM instance Control.Monad.Catch.MonadThrow Language.Jsonnet.JsonnetM instance Control.Monad.Error.Class.MonadError Language.Jsonnet.Error.Error Language.Jsonnet.JsonnetM instance Control.Monad.Reader.Class.MonadReader Language.Jsonnet.Config Language.Jsonnet.JsonnetM instance Control.Monad.Fix.MonadFix Language.Jsonnet.JsonnetM instance Control.Monad.IO.Class.MonadIO Language.Jsonnet.JsonnetM instance GHC.Base.Monad Language.Jsonnet.JsonnetM instance GHC.Base.Applicative Language.Jsonnet.JsonnetM instance GHC.Base.Functor Language.Jsonnet.JsonnetM