Skip to content
This repository has been archived by the owner on Jul 25, 2022. It is now read-only.

Commit

Permalink
Modify mappend to avoid discarding
Browse files Browse the repository at this point in the history
Closes #2
  • Loading branch information
chris-martin committed Feb 7, 2023
1 parent 092dd89 commit 1046c49
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
## 0.5.0

The behavior of `(<>)` for the `Ini` type has changed.

- `<>` previously discarded all `iniGlobals`. Now it concatenates
the globals from the two `Ini` values.

- When two `Ini` values contained `iniSections` with the same name,
`<>` previously returned the section from the left value and
discarded the section of the same name from the right value.
Now it concatenates the sections of the same name.

## 0.4.2

_2022-07-26, Andreas Abel_
Expand Down
2 changes: 1 addition & 1 deletion ini.cabal
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: >= 1.10
name: ini
version: 0.4.2
version: 0.5.0
synopsis: Configuration files in the INI format.
description: Quick and easy configuration files in the INI format.
license: BSD3
Expand Down
7 changes: 6 additions & 1 deletion src/Data/Ini.hs
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,13 @@ data Ini =
}
deriving (Show, Eq)

-- | '<>' concatenates the lists of entries within each section (since @ini-0.5.0@)
instance Semigroup Ini where
x <> y = Ini {iniGlobals = mempty, iniSections = iniSections x <> iniSections y}
x <> y =
Ini
{ iniGlobals = iniGlobals x ++ iniGlobals y
, iniSections = M.unionWith (++) (iniSections x) (iniSections y)
}

instance Monoid Ini where
mempty = Ini {iniGlobals = mempty, iniSections = mempty}
Expand Down

0 comments on commit 1046c49

Please sign in to comment.