19 lines
543 B
Haskell
19 lines
543 B
Haskell
setValue :: String -> String -> INI -> INI
|
|
setValue f v = INI . replaceOn (eqv f) (Field f v) . entries
|
|
|
|
setFlag :: String -> Bool -> INI -> INI
|
|
setFlag f v = INI . replaceOn (eqv f) (Flag f v) . entries
|
|
|
|
enable f = setFlag f True
|
|
disable f = setFlag f False
|
|
|
|
eqv f entry = (toUpper <$> f) == (toUpper <$> field entry)
|
|
where field (Field f _) = f
|
|
field (Flag f _) = f
|
|
field _ = ""
|
|
|
|
replaceOn p x lst = prev ++ x : post
|
|
where
|
|
(prev,post) = case break p lst of
|
|
(lst, []) -> (lst, [])
|
|
(lst, _:xs) -> (lst, xs)
|