[{"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":[]}]