[{"name":"Elm.CodeGen","comment":" Elm.CodeGen is a DSL designed to make it easier to write Elm code that generates Elm code.\n\n\n# Types describing parts of the Elm AST.\n\n@docs Comment, Documentation, ModuleName, Module, File, Declaration, Import, TypeAnnotation\n@docs Exposing, TopLevelExpose, Expression, Pattern\n\n\n# Functions for building Elm source files.\n\n@docs file\n\n\n# Functions for building module declarations.\n\n@docs normalModule, portModule\n\n\n# Functions for building an exposing statement.\n\n@docs all, explicit, infixExpose, functionExpose, typeOrAliasExpose, typeExpose, openExposedType, closedExposedType\n\n\n# Functions for building import statements.\n\n@docs import_\n\n\n# Incrementally build up import and export lists.\n\nThis is useful during code generation where the exact imports and exports are not known in advance\nbut depend on what code is actually generated. Each section of code generation can declare the imports and\nexposings that it needs and they can be combined and de-duplicated to produce a final list.\n\n@docs ImportsAndExposing, deDupeImportsAndExposing, emptyImportsAndExposing, addImport, addExposing\n\n\n# Functions for building top-level declarations.\n\n@docs functionDeclaration, aliasDeclaration, customTypeDeclaration, portDeclaration, destructuring\n\n\n# Functions for building Elm type signatures.\n\n@docs signature\n\n\n# Functions for building Elm expressions.\n\n@docs pipe, chain, unitExpr, application, operatorApplication, functionOrValue, simpleVal, ifBlock, prefixOperator\n@docs operator, integer, hex, floatable, negation, literal, charLiteral, tupledExpression, parenthesizedExpression\n@docs letExpression, caseExpression, lambdaExpression, recordExpr, listExpr, recordAccess, recordAccessFunction\n@docs recordUpdateExpression, glslExpression\n\n\n# Functions for building de-structuring pattern matchings.\n\n@docs allPattern, unitPattern, charPattern, stringPattern, intPattern, hexPattern, floatPattern\n@docs tuplePattern, recordPattern, unConsPattern, listPattern, varPattern, namedPattern, asPattern\n@docs paranthesizedPattern\n\n\n# Functions for building Elm type annotations.\n\n@docs genericType, typed, unit, tupled, record, genericRecord, functionTypeAnnotation\n\n","unions":[],"aliases":[{"name":"Comment","comment":" Comments are just Strings.\n","args":[],"type":"String.String"},{"name":"Declaration","comment":" The AST for a top-level Elm declaration; a function, a value, a type or a\ntype alias.\n","args":[],"type":"Elm.Syntax.Declaration.Declaration"},{"name":"Documentation","comment":" Documentation is just Strings.\n","args":[],"type":"String.String"},{"name":"Exposing","comment":" The AST for an Elm exposing statement.\n","args":[],"type":"Elm.Syntax.Exposing.Exposing"},{"name":"Expression","comment":" The AST for an Elm expression.\n","args":[],"type":"Elm.Syntax.Expression.Expression"},{"name":"File","comment":" The AST for an Elm file.\n","args":[],"type":"Elm.Syntax.File.File"},{"name":"Import","comment":" The AST for an Elm import statement.\n","args":[],"type":"Elm.Syntax.Import.Import"},{"name":"ImportsAndExposing","comment":" Captures lists of imports and exposings of a module, allowing these to be built up\ndynamically as code generation progresses.\n","args":[],"type":"( List.List Elm.CodeGen.Import, List.List Elm.CodeGen.TopLevelExpose )"},{"name":"Module","comment":" The AST for an Elm module.\n","args":[],"type":"Elm.Syntax.Module.Module"},{"name":"ModuleName","comment":" A module name can consist of mulitple Stirngs separated with '.'.\n","args":[],"type":"List.List String.String"},{"name":"Pattern","comment":" The AST for a de-structuring Elm pattern matching expression.\n","args":[],"type":"Elm.Syntax.Pattern.Pattern"},{"name":"TopLevelExpose","comment":" The AST for a member of an Elm exposing statement.\n","args":[],"type":"Elm.Syntax.Exposing.TopLevelExpose"},{"name":"TypeAnnotation","comment":" The AST for an Elm type annotation.\n","args":[],"type":"Elm.Syntax.TypeAnnotation.TypeAnnotation"}],"values":[{"name":"addExposing","comment":" Adds an exposing to the list.\n","type":"Elm.CodeGen.TopLevelExpose -> Elm.CodeGen.ImportsAndExposing -> Elm.CodeGen.ImportsAndExposing"},{"name":"addImport","comment":" Adds an import to the list.\n","type":"Elm.CodeGen.Import -> Elm.CodeGen.ImportsAndExposing -> Elm.CodeGen.ImportsAndExposing"},{"name":"aliasDeclaration","comment":" AliasDeclaration TypeAlias\n","type":"Maybe.Maybe Elm.CodeGen.Documentation -> String.String -> List.List String.String -> Elm.CodeGen.TypeAnnotation -> Elm.CodeGen.Declaration"},{"name":"all","comment":" All Range\n","type":"Elm.CodeGen.Exposing"},{"name":"allPattern","comment":" AllPattern\n","type":"Elm.CodeGen.Pattern"},{"name":"application","comment":" Application (List (Node Expression))\n","type":"List.List Elm.CodeGen.Expression -> Elm.CodeGen.Expression"},{"name":"asPattern","comment":" AsPattern (Node Pattern) (Node String)\n","type":"Elm.CodeGen.Pattern -> String.String -> Elm.CodeGen.Pattern"},{"name":"caseExpression","comment":" CaseExpression CaseBlock\n","type":"Elm.Syntax.Expression.CaseBlock -> Elm.CodeGen.Expression"},{"name":"chain","comment":" Joins multiple expressions together with the function chain operator `>>`. An\nexpression `a` combined with a list of expressions `[b, c, d]` results in:\n\n    a >> b >> c >> d\n\n","type":"Elm.CodeGen.Expression -> List.List Elm.CodeGen.Expression -> Elm.CodeGen.Expression"},{"name":"charLiteral","comment":" CharLiteral Char\n","type":"Char.Char -> Elm.CodeGen.Expression"},{"name":"charPattern","comment":" CharPattern Char\n","type":"Char.Char -> Elm.CodeGen.Pattern"},{"name":"closedExposedType","comment":" Creates an exposing member for an opaque type, exposing none of its constructors.\n","type":"String.String -> Elm.Syntax.Exposing.ExposedType"},{"name":"customTypeDeclaration","comment":" CustomTypeDeclaration Type\n","type":"Maybe.Maybe Elm.CodeGen.Documentation -> String.String -> List.List String.String -> List.List ( String.String, List.List Elm.CodeGen.TypeAnnotation ) -> Elm.CodeGen.Declaration"},{"name":"deDupeImportsAndExposing","comment":" Simplifies the imports and exposings by removing any duplicates.\n","type":"List.List Elm.CodeGen.ImportsAndExposing -> Elm.CodeGen.ImportsAndExposing"},{"name":"destructuring","comment":" Destructuring (Node Pattern) (Node Expression)\n","type":"Elm.CodeGen.Pattern -> Elm.CodeGen.Expression -> Elm.CodeGen.Declaration"},{"name":"emptyImportsAndExposing","comment":" Creates empty imports and exposings lists.\n","type":"Elm.CodeGen.ImportsAndExposing"},{"name":"explicit","comment":" Explicit (List (Node TopLevelExpose))\n","type":"List.List Elm.CodeGen.TopLevelExpose -> Elm.CodeGen.Exposing"},{"name":"file","comment":" Assembles all the components of an Elm file; the module declaration, the\ncomments, the imports and the top-level declarations.\n","type":"Elm.CodeGen.Module -> List.List Elm.CodeGen.Import -> List.List Elm.CodeGen.Declaration -> List.List Elm.CodeGen.Comment -> Elm.CodeGen.File"},{"name":"floatPattern","comment":" FloatPattern Float\n","type":"Basics.Float -> Elm.CodeGen.Pattern"},{"name":"floatable","comment":" Floatable Float\n","type":"Basics.Float -> Elm.CodeGen.Expression"},{"name":"functionDeclaration","comment":" FunctionDeclaration Function\n","type":"Maybe.Maybe Elm.CodeGen.Documentation -> Maybe.Maybe Elm.Syntax.Signature.Signature -> String.String -> List.List Elm.CodeGen.Pattern -> Elm.CodeGen.Expression -> Elm.CodeGen.Declaration"},{"name":"functionExpose","comment":" FunctionExpose String\n","type":"String.String -> Elm.CodeGen.TopLevelExpose"},{"name":"functionOrValue","comment":" FunctionOrValue ModuleName String\n","type":"Elm.CodeGen.ModuleName -> String.String -> Elm.CodeGen.Expression"},{"name":"functionTypeAnnotation","comment":" FunctionTypeAnnotation (Node TypeAnnotation) (Node TypeAnnotation)\n","type":"Elm.CodeGen.TypeAnnotation -> Elm.CodeGen.TypeAnnotation -> Elm.CodeGen.TypeAnnotation"},{"name":"genericRecord","comment":" GenericRecord (Node String) (Node RecordDefinition)\n","type":"String.String -> List.List ( String.String, Elm.CodeGen.TypeAnnotation ) -> Elm.CodeGen.TypeAnnotation"},{"name":"genericType","comment":" GenericType String\n","type":"String.String -> Elm.CodeGen.TypeAnnotation"},{"name":"glslExpression","comment":" GLSLExpression String\n","type":"String.String -> Elm.CodeGen.Expression"},{"name":"hex","comment":" Hex Int\n","type":"Basics.Int -> Elm.CodeGen.Expression"},{"name":"hexPattern","comment":" HexPattern Int\n","type":"Basics.Int -> Elm.CodeGen.Pattern"},{"name":"ifBlock","comment":" IfBlock (Node Expression) (Node Expression) (Node Expression)\n","type":"Elm.CodeGen.Expression -> Elm.CodeGen.Expression -> Elm.CodeGen.Expression -> Elm.CodeGen.Expression"},{"name":"import_","comment":" Creates an Elm import statement; the name of the module, an optional alias\nname for the module, and an optional list of exposings from the module.\n","type":"Elm.CodeGen.ModuleName -> Maybe.Maybe Elm.CodeGen.ModuleName -> Maybe.Maybe Elm.CodeGen.Exposing -> Elm.CodeGen.Import"},{"name":"infixExpose","comment":" InfixExpose String\n","type":"String.String -> Elm.CodeGen.TopLevelExpose"},{"name":"intPattern","comment":" IntPattern Int\n","type":"Basics.Int -> Elm.CodeGen.Pattern"},{"name":"integer","comment":" Integer Int\n","type":"Basics.Int -> Elm.CodeGen.Expression"},{"name":"lambdaExpression","comment":" LambdaExpression Lambda\n","type":"Elm.Syntax.Expression.Lambda -> Elm.CodeGen.Expression"},{"name":"letExpression","comment":" LetExpression LetBlock\n","type":"Elm.Syntax.Expression.LetBlock -> Elm.CodeGen.Expression"},{"name":"listExpr","comment":" ListExpr (List (Node Expression))\n","type":"List.List Elm.CodeGen.Expression -> Elm.CodeGen.Expression"},{"name":"listPattern","comment":" ListPattern (List (Node Pattern))\n","type":"List.List Elm.CodeGen.Pattern -> Elm.CodeGen.Pattern"},{"name":"literal","comment":" Literal String\n","type":"String.String -> Elm.CodeGen.Expression"},{"name":"namedPattern","comment":" NamedPattern QualifiedNameRef (List (Node Pattern))\n","type":"Elm.Syntax.Pattern.QualifiedNameRef -> List.List Elm.CodeGen.Pattern -> Elm.CodeGen.Pattern"},{"name":"negation","comment":" Negation (Node Expression)\n","type":"Elm.CodeGen.Expression -> Elm.CodeGen.Expression"},{"name":"normalModule","comment":" NormalModule DefaultModuleData\n","type":"Elm.CodeGen.ModuleName -> List.List Elm.CodeGen.TopLevelExpose -> Elm.CodeGen.Module"},{"name":"openExposedType","comment":" Creates an exposing member for a type, exposing all of the types constructors.\n","type":"String.String -> Elm.Syntax.Exposing.ExposedType"},{"name":"operator","comment":" Operator String\n","type":"String.String -> Elm.CodeGen.Expression"},{"name":"operatorApplication","comment":" OperatorApplication String InfixDirection (Node Expression) (Node Expression)\n","type":"String.String -> Elm.CodeGen.InfixDirection -> Elm.CodeGen.Expression -> Elm.CodeGen.Expression -> Elm.CodeGen.Expression"},{"name":"paranthesizedPattern","comment":" ParenthesizedPattern (Node Pattern)\n","type":"Elm.CodeGen.Pattern -> Elm.CodeGen.Pattern"},{"name":"parenthesizedExpression","comment":" ParenthesizedExpression (Node Expression)\n","type":"Elm.CodeGen.Expression -> Elm.CodeGen.Expression"},{"name":"pipe","comment":" Joins multiple expressions together with the pipe operator `|>`. An\nexpression `a` combined with a list of expressions `[b, c, d]` results in:\n\n    a |> b |> c |> d\n\n","type":"Elm.CodeGen.Expression -> List.List Elm.CodeGen.Expression -> Elm.CodeGen.Expression"},{"name":"portDeclaration","comment":" PortDeclaration Signature\n","type":"String.String -> Elm.CodeGen.TypeAnnotation -> Elm.CodeGen.Declaration"},{"name":"portModule","comment":" PortModule DefaultModuleData\n","type":"Elm.CodeGen.ModuleName -> List.List Elm.CodeGen.TopLevelExpose -> Elm.CodeGen.Module"},{"name":"prefixOperator","comment":" PrefixOperator String\n","type":"String.String -> Elm.CodeGen.Expression"},{"name":"record","comment":" Record RecordDefinition\n","type":"List.List ( String.String, Elm.CodeGen.TypeAnnotation ) -> Elm.CodeGen.TypeAnnotation"},{"name":"recordAccess","comment":" RecordAccess (Node Expression) (Node String)\n","type":"Elm.CodeGen.Expression -> String.String -> Elm.CodeGen.Expression"},{"name":"recordAccessFunction","comment":" RecordAccessFunction String\n","type":"String.String -> Elm.CodeGen.Expression"},{"name":"recordExpr","comment":" RecordExpr (List (Node RecordSetter))\n","type":"List.List Elm.Syntax.Expression.RecordSetter -> Elm.CodeGen.Expression"},{"name":"recordPattern","comment":" RecordPattern (List (Node String))\n","type":"List.List String.String -> Elm.CodeGen.Pattern"},{"name":"recordUpdateExpression","comment":" RecordUpdateExpression (Node String) (List (Node RecordSetter))\n","type":"String.String -> List.List Elm.Syntax.Expression.RecordSetter -> Elm.CodeGen.Expression"},{"name":"signature","comment":" Creates a type signature.\n","type":"String.String -> Elm.CodeGen.TypeAnnotation -> Elm.Syntax.Signature.Signature"},{"name":"simpleVal","comment":" Creates a FunctionOrValue with no qualifiying module.\n","type":"String.String -> Elm.CodeGen.Expression"},{"name":"stringPattern","comment":" StringPattern String\n","type":"String.String -> Elm.CodeGen.Pattern"},{"name":"tuplePattern","comment":" TuplePattern (List (Node Pattern))\n","type":"List.List Elm.CodeGen.Pattern -> Elm.CodeGen.Pattern"},{"name":"tupled","comment":" Tupled (List (Node TypeAnnotation))\n","type":"List.List Elm.CodeGen.TypeAnnotation -> Elm.CodeGen.TypeAnnotation"},{"name":"tupledExpression","comment":" TupledExpression (List (Node Expression))\n","type":"List.List Elm.CodeGen.Expression -> Elm.CodeGen.Expression"},{"name":"typeExpose","comment":" TypeExpose ExposedType\n","type":"Elm.Syntax.Exposing.ExposedType -> Elm.CodeGen.TopLevelExpose"},{"name":"typeOrAliasExpose","comment":" TypeOrAliasExpose String\n","type":"String.String -> Elm.CodeGen.TopLevelExpose"},{"name":"typed","comment":" Typed (Node ( ModuleName, String )) (List (Node TypeAnnotation))\n","type":"Elm.CodeGen.ModuleName -> String.String -> List.List Elm.CodeGen.TypeAnnotation -> Elm.CodeGen.TypeAnnotation"},{"name":"unConsPattern","comment":" UnConsPattern (Node Pattern) (Node Pattern)\n","type":"Elm.CodeGen.Pattern -> Elm.CodeGen.Pattern -> Elm.CodeGen.Pattern"},{"name":"unit","comment":" Unit\n","type":"Elm.CodeGen.TypeAnnotation"},{"name":"unitExpr","comment":" UnitExpr\n","type":"Elm.CodeGen.Expression"},{"name":"unitPattern","comment":" UnitPattern\n","type":"Elm.CodeGen.Pattern"},{"name":"varPattern","comment":" VarPattern String\n","type":"String.String -> Elm.CodeGen.Pattern"}],"binops":[]},{"name":"Elm.Pretty","comment":" Elm.Pretty is a pretty printer for Elm syntax trees. It makes use of\n`the-sett/elm-pretty-printer` to best fit the code to a given character width.\n\nIt aims to output code that is fully stable with respect to `elm-format` in the\nsense that running `elm-format` on the output should have no effect at all. The\nadvantage of this is that if generated code moves to being edited by hand, there\nwill not be a large white-space only diff created when `elm-format` is applied.\n\nTo print the `Doc` created by the `pretty` functions, `the-sett/elm-pretty-printer`\nis used:\n\n    import Elm.Pretty\n    import Pretty\n\n    elmAsString =\n        Elm.Pretty.pretty someFile\n            |> Pretty.pretty 120\n\n    -- Fit to a page width of 120 characters\n\n\n# Pretty prints an entire Elm file.\n\n@docs pretty\n\n\n# Pretty printing snippets of Elm.\n\n@docs prettyImports, prettyExposing\n@docs prettyDeclaration, prettyFun, prettyTypeAlias, prettyCustomType, prettyPortDeclaration, prettyDestructuring\n@docs prettySignature, prettyPattern, prettyExpression, prettyTypeAnnotation\n\n","unions":[],"aliases":[],"values":[{"name":"pretty","comment":" Pretty prints a file of Elm code.\n","type":"Elm.Syntax.File.File -> Pretty.Doc"},{"name":"prettyCustomType","comment":" Pretty prints a custom type declaration, which may include documentation too.\n","type":"Elm.Syntax.Type.Type -> Pretty.Doc"},{"name":"prettyDeclaration","comment":" Pretty prints a single top-level declaration.\n","type":"Elm.Syntax.Declaration.Declaration -> Pretty.Doc"},{"name":"prettyDestructuring","comment":" Pretty prints a desctructuring declaration.\n","type":"Elm.Syntax.Pattern.Pattern -> Elm.Syntax.Expression.Expression -> Pretty.Doc"},{"name":"prettyExposing","comment":" Pretty prints the contents of an exposing statement, as found on a module or import\nstatement.\n\nThe exposed values will be de-duplicated and sorted.\n\n","type":"Elm.Syntax.Exposing.Exposing -> Pretty.Doc"},{"name":"prettyExpression","comment":" Pretty prints an expression.\n","type":"Elm.Syntax.Expression.Expression -> Pretty.Doc"},{"name":"prettyFun","comment":" Pretty prints an Elm function, which may include documentation and a signature too.\n","type":"Elm.Syntax.Expression.Function -> Pretty.Doc"},{"name":"prettyImports","comment":" Pretty prints a list of import statements.\n\nThe list will be de-duplicated and sorted.\n\n","type":"List.List Elm.Syntax.Import.Import -> Pretty.Doc"},{"name":"prettyPattern","comment":" Pretty prints a pattern.\n","type":"Elm.Syntax.Pattern.Pattern -> Pretty.Doc"},{"name":"prettyPortDeclaration","comment":" Pretty prints a port declaration.\n","type":"Elm.Syntax.Signature.Signature -> Pretty.Doc"},{"name":"prettySignature","comment":" Pretty prints a type signature.\n","type":"Elm.Syntax.Signature.Signature -> Pretty.Doc"},{"name":"prettyTypeAlias","comment":" Pretty prints a type alias definition, which may include documentation too.\n","type":"Elm.Syntax.TypeAlias.TypeAlias -> Pretty.Doc"},{"name":"prettyTypeAnnotation","comment":" Pretty prints a type annotation.\n","type":"Elm.Syntax.TypeAnnotation.TypeAnnotation -> Pretty.Doc"}],"binops":[]}]