ini 0.3.2 → 0.3.3
raw patch · 2 files changed
+39/−5 lines, 2 files
Files
- ini.cabal +1/−1
- src/Data/Ini.hs +38/−4
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