h$V      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred Safe-Inferred toml-reader=Annotates each element with the history of all past elements.zipHistory ["a", "b", "c"]9[(["a"], "a"), (["a", "b"], "b"), (["a", "b", "c"], "c")] Safe-Inferred#$0 toml-reader8For a non-empty list of keys, iterate through the given  and return the possibly missing value at the path and a function to set the value at the given path and return the modified input . let obj = undefined -- { "a": { "b": { "c": 1 } } } (mValue, setValue) <- getPathLens doRecurse ["a", "b", "c"] obj print mValue -- Just 1 print (setValue 2) -- { "a": { "b": { "c": 2 } } }  toml-readerSame as , except without the setter. toml-readerHow to get and set the next Map from the possibly missing value. Passes in the path taken so far. Safe-Inferred 8: toml-reader%Render a Value in pseudo-JSON format.     Safe-Inferred #$  toml-reader!When a key is defined twice, e.g. name = First name = Second  toml-reader%When a section is defined twice, e.g. [foo] a = 1 [foo] b = 2  toml-reader.When a key attempts to extend an invalid table .a = {} [a.b] b = {} b.a = 1 c.x.x = 1 [c.a] ! toml-readerWhen a section attempts to extend a table within an inline array a = [{ b = 1 }] [a.c] " toml-readerWhen a key is already defined, but attempting to create an implicit array at the same key, e.g. !list = [1, 2, 3] [[list]] a = 1 # toml-reader?When a non-table value is already defined in a nested key, e.g. a.b = 1 a.b.c.d = 2 $ toml-readerWhen a non-table value is already defined in a nested implicit array, e.g. a.b = 1 [[a.b.c]] d = 2  !"#$%&'()*+,-/.0,-/. !"#$%&'()*+0 Safe-Inferred  #$? 9 toml-reader!Name of file (for error messages) toml-readerInput99None  >> toml-reader$A type class containing the default C for the given type.See the docs for C for examples.@ toml-readerThe underlying decoding monad that either returns a value of type a or returns an error.C toml-readerA  Decoder a represents a function for decoding a TOML value to a value of type a.(Generally, you'd only need to chain the  getField* functions together, like decoder = MyConfig <$> getField "a" <*> getField "b" <*> getField "c" or use interfaces like  and : decoder = do cfgType <- getField "type" case cfgType of "int" -> MyIntValue <$> (getField "int" <|> getField "integer") "bool" -> MyBoolValue <$> getField "bool" _ -> fail $ "Invalid type: " <> cfgType &but you can also manually implement a C with F.F toml-readerManually implement a C with the given function.G toml-readerRun a C with the given . makeDecoder $ \v -> do a <- runDecoder decoder1 v b <- runDecoder decoder2 v return (a, b)  Satisfies makeDecoder . runDecoder === id runDecoder . makeDecoder === id H toml-reader)Throw an error indicating that the given  is invalid. makeDecoder $ \v -> case v of Integer 42 -> invalidValue "We don't like this number" v _ -> runDecoder tomlDecoder v -- or alternatively, tomlDecoder >>= case 42 -> makeDecoder $ invalidValue "We don't like this number" v -> pure v I toml-reader)Throw an error indicating that the given ! isn't the correct type of value. makeDecoder $ \v -> case v of String s -> ... _ -> typeMismatch v J toml-reader Throw a generic failure message.K toml-readerThrow the given .M toml-readerDecode the given TOML input.N toml-reader,Decode the given TOML input using the given C.P toml-reader*Decode a TOML file at the given file path.Q toml-reader.Decode a field in a TOML Value. Equivalent to U with a single-element list.  a = 1 b = asdf -- MyConfig 1 "asdf" MyConfig <$> getField "a" <*> getField "b" R toml-readerSame as Q, except with the given C.S toml-readerDecode a field in a TOML Value, or Nothing if the field doesn't exist. Equivalent to W with a single-element list. a = 1 -- MyConfig (Just 1) Nothing MyConfig <$> getFieldOpt "a" <*> getFieldOpt "b" T toml-readerSame as S, except with the given C.U toml-reader&Decode a nested field in a TOML Value. a.b = 1 0-- MyConfig 1 MyConfig <$> getFields ["a", "b"] V toml-readerSame as U, except with the given C.W toml-reader*Decode a nested field in a TOML Value, or " if any of the fields don't exist. a.b = 1 -- MyConfig (Just 1) Nothing Nothing MyConfig <$> getFieldsOpt ["a", "b"] <*> getFieldsOpt ["a", "c"] <*> getFieldsOpt ["b", "c"] X toml-readerSame as W, except with the given C.Y toml-reader(Decode a list of values using the given C. [[a]] b = 1 [[a]] b = 2 -- MyConfig [1, 2] MyConfig <$> getFieldWith (getArrayOf (getField "b")) "a" w toml-readerSince TOML doesn't support literal NULLs, this will only ever return %. To get the absence of a field, use S or one of its variants.>?@ABCDEFGHIJKLMNOPQRSTUVWXYMNOP>?CDEQUSWRVTXY@ABFGLHIJKNone<?  !"#$%&'()*+,-/.0>?@CFGHIJMNPQRSTUVWXY?MNP>?CQUSWRVTXY@FGHIJ ,-/. !"#$%&'()*+0       !"#$%&'()*+,-./012345%6789:;<=>?@ABCDEFFGHHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*toml-reader-0.1.0.0-J2PkHtEIoovITMoD1hWFGzTOML.Utils.NonEmptyTOML.Utils.Map TOML.Value TOML.Error TOML.Parser TOML.DecodePaths_toml_readerTOML zipHistory getPathLensgetPathValueTableArrayStringIntegerFloatBooleanOffsetDateTime LocalDateTime LocalDate LocalTime renderValue $fShowValue $fEqValue$fGenericValue $fNFDataValue DecodeError MissingField InvalidValue TypeMismatchOtherDecodeError ContextItemKeyIndex DecodeContextNormalizeErrorDuplicateKeyErrorDuplicateSectionErrorExtendTableErrorExtendTableInInlineArrayErrorImplicitArrayForDefinedKeyErrorNonTableInNestedKeyError"NonTableInNestedImplicitArrayError_path_existingValue _valueToSet _sectionKey _originalKey _tableSection_originalValue TOMLError ParseErrorrenderTOMLError$fShowTOMLError $fEqTOMLError$fShowDecodeError$fEqDecodeError$fShowContextItem$fEqContextItem$fShowNormalizeError$fEqNormalizeError parseTOML$fMonadNormalizeM$fApplicativeNormalizeM$fFunctorNormalizeM $fEqTableType DecodeTOML tomlDecoderDecodeM unDecodeMDecoder unDecoder makeDecoder runDecoder invalidValue typeMismatch decodeFail decodeErroraddContextItemdecode decodeWithdecodeWithOpts decodeFilegetField getFieldWith getFieldOptgetFieldOptWith getFields getFieldsWith getFieldsOptgetFieldsOptWith getArrayOf$fMonadFailDecodeM$fAlternativeDecodeM$fMonadDecodeM$fApplicativeDecodeM$fFunctorDecodeM$fMonadFailDecoder$fAlternativeDecoder$fMonadDecoder$fApplicativeDecoder$fFunctorDecoder$fDecodeTOML(,,,)$fDecodeTOML(,,)$fDecodeTOML(,)$fDecodeTOML()$fDecodeTOMLSeq$fDecodeTOMLIntMap$fDecodeTOMLSet$fDecodeTOMLIntSet$fDecodeTOMLNonEmpty$fDecodeTOMLMap$fDecodeTOML[]$fDecodeTOMLDual$fDecodeTOMLMin$fDecodeTOMLMax$fDecodeTOMLLast$fDecodeTOMLFirst$fDecodeTOMLLast0$fDecodeTOMLFirst0$fDecodeTOMLEither$fDecodeTOMLMaybe$fDecodeTOMLConst$fDecodeTOMLProxy$fDecodeTOMLIdentity$fDecodeTOMLOrdering$fDecodeTOMLVersion$fDecodeTOMLCalendarDiffDays$fDecodeTOMLCalendarDiffTime$fDecodeTOMLNominalDiffTime$fDecodeTOMLDiffTime$fDecodeTOMLDayOfWeek$fDecodeTOMLTimeOfDay$fDecodeTOMLDay$fDecodeTOMLLocalTime$fDecodeTOMLSystemTime$fDecodeTOMLUTCTime$fDecodeTOMLZonedTime$fDecodeTOMLText$fDecodeTOMLText0$fDecodeTOML[]0$fDecodeTOMLChar$fDecodeTOMLFixed$fDecodeTOMLRatio$fDecodeTOMLFloat$fDecodeTOMLDouble$fDecodeTOMLNatural$fDecodeTOMLWord64$fDecodeTOMLWord32$fDecodeTOMLWord16$fDecodeTOMLWord8$fDecodeTOMLWord$fDecodeTOMLInt64$fDecodeTOMLInt32$fDecodeTOMLInt16$fDecodeTOMLInt8$fDecodeTOMLInt$fDecodeTOMLInteger$fDecodeTOMLBool$fDecodeTOMLVoid$fDecodeTOMLValueversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamecontainers-0.6.2.1Data.Map.InternalMapbaseGHC.BaseMonad Alternative GHC.MaybeNothingJust