[{"name":"ElmSyntaxParserLenient","comment":" Like [`Elm.Parser`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Parser)\nbut able to parse badly indented code and similar somewhat incorrect syntax,\nsimilar to elm-format.\n\nThis is **not** a fault-tolerant parser!\nSo if you write something it can't recognize in a file,\nthe whole thing will fail.\n\nAlso, precise ranges of some parts in in the parsed result are not reliable.\nThough they will still be correct when viewed relative to each other\nand will tell you how many lines they span.\nThis means [`ElmSyntaxPrint`](ElmSyntaxPrint)\ncan pick this up and format it in a way compatible\nwith the compiler or [`Elm.Parser`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Parser).\n\nSome additional lenient parsing:\n\n  - `f | g` → `f |> g`\n\n  - `a != b` or `a !== b` → `a /= b`\n\n  - `a === b` → `a == b`\n\n  - `a ** b` → `a ^ b`\n\n  - `\\a => b` or `\\a. b` → `\\a -> b`\n\n  - merges consecutive `,` in record, list or explicit exposing\n\n  - removes extra `,` before first record field, list element or expose\n\n  - removes remove extra `|` before first variant declaration\n\n  - corrects `port module` to `module` if no ports exist and the other way round\n\n  - corrects exposing `(...)` → `(..)`\n\n  - corrects expression record field name-value separators\n\n    `{ name : value }` or `{ name value }`\n\n    → `{ name = value }`\n\n  - corrects type record field name-value separators\n\n    `{ name = value }` or `{ name value }`\n\n    → `{ name : value }`\n\n  - expands expression record field punning\n\n    `{ field }` → `{ field = field }`\n\n  - corrects `->` to `=` in an expression declaration and let expression declaration\n\n    `function parameters -> result`\n\n    → `function parameters = result`\n\n  - allows omitting the name before the type in an expression declaration or let expression declaration\n\n        : Type\n        function parameters =\n            result\n\n    →\n\n        function : Type\n        function parameters =\n            result\n\n  - allows matching everything before\n\n        3 |> String.toInt case\n            Nothing ->\n                0\n\n            Just n ->\n                n\n\n    →\n\n        case 3 |> String.toInt of\n            Nothing ->\n                0\n\n            Just n ->\n                n\n\n  - moves import statements anywhere at the top level to the import section\n\n@docs Parser, run, module_\n\nThat's all you'll need most of the time.\n\nSometimes it's useful to parse only some part of the syntax,\nto, say, display only an expression in an article\nor reparse only the touched declarations on save.\n\n@docs Comments, commentsToList\n@docs expose, exposing_\n@docs moduleHeader, import_, declarations, declaration\n@docs type_, pattern, expression\n\n\n### whitespace\n\n@docs multiLineComment, singleLineComment, whitespaceAndComments\n\n\n### low-level\n\n@docs moduleName, nameLowercase, nameUppercase\n@docs RopeFilled\n\n","unions":[{"name":"RopeFilled","comment":" Constantly appending lists of comments when combining parse can get expensive,\nso we summarize everything in this temporary structure\nand only convert to a list when we're done.\n\nInspired by [miniBill/elm-rope](https://dark.elm.dmy.fr/packages/miniBill/elm-rope/latest/)\n\n","args":["a"],"cases":[["RopeLeaf",["a","()"]],["RopeBranch2",["ElmSyntaxParserLenient.RopeFilled a","ElmSyntaxParserLenient.RopeFilled a"]]]}],"aliases":[{"name":"Comments","comment":" A bag of comment nodes.\nEach comment string contains the `{-`, `-}` or `--`.\n\nAccess with [`commentsToList`](#commentsToList)\n\n","args":[],"type":"Maybe.Maybe (ElmSyntaxParserLenient.RopeFilled (Elm.Syntax.Node.Node String.String))"},{"name":"Parser","comment":" Can turn a String into syntax or Nothing.\nSee [`ElmSyntaxParserLenient.run`](#run)\n\n(This is not related to [`elm/parser`](https://dark.elm.dmy.fr/packages/elm/parser/latest/).\n[Open an issue](https://github.com/lue-bird/elm-syntax-format/issues/new)\nif you need a way to covert to that)\n\n","args":["a"],"type":"ParserFast.Parser a"}],"values":[{"name":"commentsToList","comment":" Extract a list of comment nodes from parse result [`Comments`](#Comments)\n","type":"ElmSyntaxParserLenient.Comments -> List.List (Elm.Syntax.Node.Node String.String)"},{"name":"declaration","comment":" [`Parser`](#Parser) for an [`Elm.Syntax.Declaration.Declaration`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Declaration#Declaration)\n","type":"ElmSyntaxParserLenient.Parser { comments : ElmSyntaxParserLenient.Comments, syntax : Elm.Syntax.Node.Node Elm.Syntax.Declaration.Declaration }"},{"name":"declarations","comment":" [`Parser`](#Parser) for a list of [`Elm.Syntax.Declaration.Declaration`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Declaration#Declaration)s\nand comments in between\n","type":"ElmSyntaxParserLenient.Parser { comments : ElmSyntaxParserLenient.Comments, syntax : List.List (Elm.Syntax.Node.Node Elm.Syntax.Declaration.Declaration) }"},{"name":"expose","comment":" [`Parser`](#Parser) for a single [`Elm.Syntax.Exposing.TopLevelExpose`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Exposing#TopLevelExpose)\n","type":"ElmSyntaxParserLenient.Parser { comments : ElmSyntaxParserLenient.Comments, syntax : Elm.Syntax.Node.Node Elm.Syntax.Exposing.TopLevelExpose }"},{"name":"exposing_","comment":" [`Parser`](#Parser) for an [`Elm.Syntax.Exposing.Exposing`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Exposing#Exposing)\n(the stuff after `exposing` in an import or module)\n","type":"ElmSyntaxParserLenient.Parser { comments : ElmSyntaxParserLenient.Comments, syntax : Elm.Syntax.Exposing.Exposing }"},{"name":"expression","comment":" [`Parser`](#Parser) for an [`Elm.Syntax.Expression.Expression`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Expression#Expression)\n","type":"ElmSyntaxParserLenient.Parser { comments : ElmSyntaxParserLenient.Comments, syntax : Elm.Syntax.Node.Node Elm.Syntax.Expression.Expression }"},{"name":"import_","comment":" [`Parser`](#Parser) for a single [`Elm.Syntax.Import.Import`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Import#Import)\n","type":"ElmSyntaxParserLenient.Parser { comments : ElmSyntaxParserLenient.Comments, syntax : Elm.Syntax.Node.Node Elm.Syntax.Import.Import }"},{"name":"moduleHeader","comment":" [`Parser`](#Parser) for an [`Elm.Syntax.Module.Module`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Module#Module)\n(confusingly, that's their name for only the `module X exposing (Y)` lines)\n","type":"ElmSyntaxParserLenient.Parser { comments : ElmSyntaxParserLenient.Comments, syntax : Elm.Syntax.Node.Node Elm.Syntax.Module.Module }"},{"name":"moduleName","comment":" [`Parser`](#Parser) for an [`Elm.Syntax.ModuleName.ModuleName`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-ModuleName#ModuleName)\n","type":"ElmSyntaxParserLenient.Parser (Elm.Syntax.Node.Node Elm.Syntax.ModuleName.ModuleName)"},{"name":"module_","comment":" [`Parser`](#Parser) for an [`Elm.Syntax.File.File`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-File#File)\n","type":"ElmSyntaxParserLenient.Parser Elm.Syntax.File.File"},{"name":"multiLineComment","comment":" [`Parser`](#Parser) for a `{-...-}` comment,\nalso verifying that it itself isn't a documentation comment\n","type":"ElmSyntaxParserLenient.Parser (Elm.Syntax.Node.Node String.String)"},{"name":"nameLowercase","comment":" [`Parser`](#Parser) for a name used for\nrecord field names and unqualified function/value references\n","type":"ElmSyntaxParserLenient.Parser String.String"},{"name":"nameUppercase","comment":" [`Parser`](#Parser) for a name used for\ntype names, variant names, record type alias constructor function names and module names\n","type":"ElmSyntaxParserLenient.Parser String.String"},{"name":"pattern","comment":" [`Parser`](#Parser) for an [`Elm.Syntax.Pattern.Pattern`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Pattern#Pattern)\n","type":"ElmSyntaxParserLenient.Parser { comments : ElmSyntaxParserLenient.Comments, syntax : Elm.Syntax.Node.Node Elm.Syntax.Pattern.Pattern }"},{"name":"run","comment":" Turn a given source String into `Just` the parsed syntax\nor `Nothing` if any unrecognizable part is found.\n","type":"ElmSyntaxParserLenient.Parser a -> String.String -> Maybe.Maybe a"},{"name":"singleLineComment","comment":" [`Parser`](#Parser) for a `--...` comment\n","type":"ElmSyntaxParserLenient.Parser (Elm.Syntax.Node.Node String.String)"},{"name":"type_","comment":" [`Parser`](#Parser) for an [`Elm.Syntax.TypeAnnotation.TypeAnnotation`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-TypeAnnotation#TypeAnnotation)\n","type":"ElmSyntaxParserLenient.Parser { comments : ElmSyntaxParserLenient.Comments, syntax : Elm.Syntax.Node.Node Elm.Syntax.TypeAnnotation.TypeAnnotation }"},{"name":"whitespaceAndComments","comment":" [`Parser`](#Parser) for the space between syntax tokens\nwhich can contain spaces, linebreaks, [`multiLineComment`](#multiLineComment)s\nand [`singleLineComment`](#singleLineComment)s\n","type":"ElmSyntaxParserLenient.Parser ElmSyntaxParserLenient.Comments"}],"binops":[]},{"name":"ElmSyntaxPrint","comment":" Pretty printing an [`elm-syntax`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/) tree\nin a way consistent with [`elm-format`](https://github.com/avh4/elm-format).\n\n@docs toString, Print\n@docs module_\n\nThat's all you'll need most of the time.\n\nSometimes it's useful to print only some part of the syntax,\nto, say, display only an expression in an article\nor reformat only the touched declarations on save.\n\n@docs moduleHeader, moduleExposing, expose, imports, import_, importExposing, moduleLevelComments, comments, comment\n@docs declarations, declaration, declarationChoiceType, declarationSignature, declarationExpression, declarationInfix, declarationPort, declarationTypeAlias\n@docs expressionNotParenthesized, case_, patternNotParenthesized, typeNotParenthesized\n@docs moduleName, qualifiedReference\n\nIf you need other syntax printing like for collapsible comments to be exposed,\n[open an issue](https://github.com/lue-bird/elm-syntax-format/issues/new)\n\n","unions":[],"aliases":[{"name":"Print","comment":" Pretty printable intermediate representation.\nSee [`toString`](#toString)\n","args":[],"type":"{ indent : Basics.Int } -> String.String"}],"values":[{"name":"case_","comment":" Print a single [`Elm.Syntax.Expression.Case`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Expression#Case)\n","type":"List.List (Elm.Syntax.Node.Node String.String) -> Elm.Syntax.Expression.Case -> ElmSyntaxPrint.Print"},{"name":"comment","comment":" Print a single `--` or `{- -}` comment.\n","type":"String.String -> ElmSyntaxPrint.Print"},{"name":"comments","comment":" Print `--` or `{- -}` comments placed _within a declaration_.\nFor top-level comments: [`moduleLevelComments`](#moduleLevelComments)\n","type":"List.List String.String -> ElmSyntaxPrint.Print"},{"name":"declaration","comment":" Print an [`Elm.Syntax.Declaration.Declaration`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Declaration#Declaration)\n","type":"{ portDocumentationComment : Maybe.Maybe (Elm.Syntax.Node.Node String.String), comments : List.List (Elm.Syntax.Node.Node String.String) } -> Elm.Syntax.Declaration.Declaration -> ElmSyntaxPrint.Print"},{"name":"declarationChoiceType","comment":" Print an [`Elm.Syntax.Type.Type`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Type#Type) declaration\n","type":"List.List (Elm.Syntax.Node.Node String.String) -> Elm.Syntax.Type.Type -> ElmSyntaxPrint.Print"},{"name":"declarationExpression","comment":" Print an [`Elm.Syntax.Expression.Function`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Expression#Function) declaration\n","type":"List.List (Elm.Syntax.Node.Node String.String) -> Elm.Syntax.Expression.Function -> ElmSyntaxPrint.Print"},{"name":"declarationInfix","comment":" Print an [`Elm.Syntax.Infix.Infix`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Infix#Infix) declaration\n","type":"Elm.Syntax.Infix.Infix -> ElmSyntaxPrint.Print"},{"name":"declarationPort","comment":" Print a `port` [`Elm.Syntax.Declaration.Declaration`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Declaration#Declaration)\n","type":"{ documentationComment : Maybe.Maybe (Elm.Syntax.Node.Node String.String), comments : List.List (Elm.Syntax.Node.Node String.String) } -> Elm.Syntax.Signature.Signature -> ElmSyntaxPrint.Print"},{"name":"declarationSignature","comment":" Print an [`Elm.Syntax.Signature.Signature`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Signature#Signature)\nas `name : Type`\n","type":"List.List (Elm.Syntax.Node.Node String.String) -> Elm.Syntax.Signature.Signature -> ElmSyntaxPrint.Print"},{"name":"declarationTypeAlias","comment":" Print an [`Elm.Syntax.TypeAlias.TypeAlias`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-TypeAlias#TypeAlias) declaration\n","type":"List.List (Elm.Syntax.Node.Node String.String) -> Elm.Syntax.TypeAlias.TypeAlias -> ElmSyntaxPrint.Print"},{"name":"declarations","comment":" Print a list of [`Elm.Syntax.Declaration.Declaration`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Declaration#Declaration)s\nand comments in between\n","type":"{ portDocumentationComments : List.List (Elm.Syntax.Node.Node String.String), comments : List.List (Elm.Syntax.Node.Node String.String), previousEnd : Elm.Syntax.Range.Location } -> List.List (Elm.Syntax.Node.Node Elm.Syntax.Declaration.Declaration) -> ElmSyntaxPrint.Print"},{"name":"expose","comment":" Print a single [`Elm.Syntax.Exposing.TopLevelExpose`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Exposing#TopLevelExpose)\n","type":"Elm.Syntax.Exposing.TopLevelExpose -> ElmSyntaxPrint.Print"},{"name":"expressionNotParenthesized","comment":" Print an [`Elm.Syntax.Expression.Expression`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Expression#Expression)\n","type":"List.List (Elm.Syntax.Node.Node String.String) -> Elm.Syntax.Node.Node Elm.Syntax.Expression.Expression -> ElmSyntaxPrint.Print"},{"name":"importExposing","comment":" Print the stuff after `exposing` in an import.\nFor module header exposing: [`moduleExposing`](#moduleExposing)\n","type":"List.List (Elm.Syntax.Node.Node String.String) -> Elm.Syntax.Node.Node Elm.Syntax.Exposing.Exposing -> ElmSyntaxPrint.Print"},{"name":"import_","comment":" Print a single [`Elm.Syntax.Import.Import`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Import#Import)\n","type":"List.List (Elm.Syntax.Node.Node String.String) -> Elm.Syntax.Node.Node Elm.Syntax.Import.Import -> ElmSyntaxPrint.Print"},{"name":"imports","comment":" Print a set of [`Elm.Syntax.Import.Import`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Import#Import)s\n","type":"List.List (Elm.Syntax.Node.Node String.String) -> List.List (Elm.Syntax.Node.Node Elm.Syntax.Import.Import) -> ElmSyntaxPrint.Print"},{"name":"moduleExposing","comment":" Print the stuff after `exposing` in a module header.\nFor import exposing: [`importExposing`](#importExposing)\n","type":"{ atDocsLines : List.List (List.List String.String), comments : List.List (Elm.Syntax.Node.Node String.String) } -> Elm.Syntax.Node.Node Elm.Syntax.Exposing.Exposing -> ElmSyntaxPrint.Print"},{"name":"moduleHeader","comment":" Print an [`Elm.Syntax.Module.Module`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Module#Module)\n(confusingly, that's their name for only the `module X exposing (Y)` lines)\n","type":"{ atDocsLines : List.List (List.List String.String), comments : List.List (Elm.Syntax.Node.Node String.String) } -> Elm.Syntax.Module.Module -> ElmSyntaxPrint.Print"},{"name":"moduleLevelComments","comment":" Print `--` or `{- -}` comments placed outside of declarations at the top level.\nFor comments within a declaration: [`comments`](#comments)\n","type":"List.List String.String -> ElmSyntaxPrint.Print"},{"name":"moduleName","comment":" Print an [`Elm.Syntax.ModuleName.ModuleName`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-ModuleName#ModuleName)\n","type":"Elm.Syntax.ModuleName.ModuleName -> ElmSyntaxPrint.Print"},{"name":"module_","comment":" Print an [`Elm.Syntax.File.File`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-File#File)\n","type":"Elm.Syntax.File.File -> ElmSyntaxPrint.Print"},{"name":"patternNotParenthesized","comment":" Print an [`Elm.Syntax.Pattern.Pattern`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-Pattern#Pattern)\n","type":"List.List (Elm.Syntax.Node.Node String.String) -> Elm.Syntax.Node.Node Elm.Syntax.Pattern.Pattern -> ElmSyntaxPrint.Print"},{"name":"qualifiedReference","comment":" Print a name with its qualification (`[]` for no qualification)\n","type":"{ qualification : List.List String.String, unqualified : String.String } -> ElmSyntaxPrint.Print"},{"name":"toString","comment":" All other helpers in this module produce a [`Print`](#Print)\nwhich you can in the end convert to a String with [`toString`](#toString)\n","type":"ElmSyntaxPrint.Print -> String.String"},{"name":"typeNotParenthesized","comment":" Print an [`Elm.Syntax.TypeAnnotation.TypeAnnotation`](https://dark.elm.dmy.fr/packages/stil4m/elm-syntax/latest/Elm-Syntax-TypeAnnotation#TypeAnnotation)\n","type":"List.List (Elm.Syntax.Node.Node String.String) -> Elm.Syntax.Node.Node Elm.Syntax.TypeAnnotation.TypeAnnotation -> ElmSyntaxPrint.Print"}],"binops":[]}]