packages feed

ini 0.3.2 → 0.3.3

raw patch · 2 files changed

+39/−5 lines, 2 files

Files

ini.cabal view
@@ -1,5 +1,5 @@ name:                ini-version:             0.3.2+version:             0.3.3 synopsis:            Quick and easy configuration files in the INI format. description:         Quick and easy configuration files in the INI format. license:             BSD3
src/Data/Ini.hs view
@@ -45,8 +45,14 @@   ,readValue   ,parseValue    -- * Writing-  ,writeIniFile   ,printIni+  ,writeIniFile+   -- * Advanced writing+  ,KeySeparator(..)+  ,WriteIniSettings(..)+  ,defaultWriteIniSettings+  ,printIniWith+  ,writeIniFileWith    -- * Types   ,Ini(..)    -- * Parsers@@ -107,17 +113,45 @@  -- | Print the INI config to a file. writeIniFile :: FilePath -> Ini -> IO ()-writeIniFile fp = T.writeFile fp . printIni+writeIniFile = writeIniFileWith defaultWriteIniSettings  -- | Print an INI config. printIni :: Ini -> Text-printIni (Ini sections) =+printIni = printIniWith defaultWriteIniSettings++-- | Either @:@ or @=@.+data KeySeparator+  = ColonKeySeparator+  | EqualsKeySeparator+  deriving (Eq, Show)++-- | Settings determining how an INI file is written.+data WriteIniSettings = WriteIniSettings+  { writeIniKeySeparator :: KeySeparator+  } deriving (Show)++-- | The default settings for writing INI files.+defaultWriteIniSettings :: WriteIniSettings+defaultWriteIniSettings = WriteIniSettings+  { writeIniKeySeparator = ColonKeySeparator+  }++-- | Print the INI config to a file.+writeIniFileWith :: WriteIniSettings -> FilePath -> Ini -> IO ()+writeIniFileWith wis fp = T.writeFile fp . printIniWith wis++-- | Print an INI config.+printIniWith :: WriteIniSettings -> Ini -> Text+printIniWith wis (Ini sections) =   T.concat (map buildSection (M.toList sections))   where buildSection (name,pairs) =           "[" <> name <> "]\n" <>           T.concat (map buildPair (M.toList pairs))         buildPair (name,value) =-          name <> ": " <> value <> "\n"+          name <> separator <> value <> "\n"+        separator = case writeIniKeySeparator wis of+          ColonKeySeparator  -> ": "+          EqualsKeySeparator -> "="  -- | Parser for an INI. iniParser :: Parser Ini