mirror of
https://github.com/chrisdone/ini.git
synced 2024-09-11 07:05:32 +03:00
Compare commits
9 Commits
7eb7215a5a
...
707a74e94b
Author | SHA1 | Date | |
---|---|---|---|
|
707a74e94b | ||
|
21ed4e6246 | ||
|
092dd89d38 | ||
|
dabb2ec567 | ||
|
5939aa6123 | ||
|
0891702a93 | ||
|
8fbf97e4f5 | ||
|
8c06066ba1 | ||
|
4359275937 |
304
.github/workflows/haskell-ci.yml
vendored
Normal file
304
.github/workflows/haskell-ci.yml
vendored
Normal file
@ -0,0 +1,304 @@
|
||||
# This GitHub workflow config has been generated by a script via
|
||||
#
|
||||
# haskell-ci 'github' 'ini.cabal'
|
||||
#
|
||||
# To regenerate the script (for example after adjusting tested-with) run
|
||||
#
|
||||
# haskell-ci regenerate
|
||||
#
|
||||
# For more information, see https://github.com/haskell-CI/haskell-ci
|
||||
#
|
||||
# version: 0.15.20230203
|
||||
#
|
||||
# REGENDATA ("0.15.20230203",["github","ini.cabal"])
|
||||
#
|
||||
name: Haskell-CI
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
jobs:
|
||||
linux:
|
||||
name: Haskell-CI - Linux - ${{ matrix.compiler }}
|
||||
runs-on: ubuntu-20.04
|
||||
timeout-minutes:
|
||||
60
|
||||
container:
|
||||
image: buildpack-deps:bionic
|
||||
continue-on-error: ${{ matrix.allow-failure }}
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- compiler: ghc-9.6.0.20230128
|
||||
compilerKind: ghc
|
||||
compilerVersion: 9.6.0.20230128
|
||||
setup-method: ghcup
|
||||
allow-failure: true
|
||||
- compiler: ghc-9.4.4
|
||||
compilerKind: ghc
|
||||
compilerVersion: 9.4.4
|
||||
setup-method: ghcup
|
||||
allow-failure: false
|
||||
- compiler: ghc-9.2.5
|
||||
compilerKind: ghc
|
||||
compilerVersion: 9.2.5
|
||||
setup-method: ghcup
|
||||
allow-failure: false
|
||||
- compiler: ghc-9.0.2
|
||||
compilerKind: ghc
|
||||
compilerVersion: 9.0.2
|
||||
setup-method: ghcup
|
||||
allow-failure: false
|
||||
- compiler: ghc-8.10.7
|
||||
compilerKind: ghc
|
||||
compilerVersion: 8.10.7
|
||||
setup-method: ghcup
|
||||
allow-failure: false
|
||||
- compiler: ghc-8.8.4
|
||||
compilerKind: ghc
|
||||
compilerVersion: 8.8.4
|
||||
setup-method: hvr-ppa
|
||||
allow-failure: false
|
||||
- compiler: ghc-8.6.5
|
||||
compilerKind: ghc
|
||||
compilerVersion: 8.6.5
|
||||
setup-method: hvr-ppa
|
||||
allow-failure: false
|
||||
- compiler: ghc-8.4.4
|
||||
compilerKind: ghc
|
||||
compilerVersion: 8.4.4
|
||||
setup-method: hvr-ppa
|
||||
allow-failure: false
|
||||
- compiler: ghc-8.2.2
|
||||
compilerKind: ghc
|
||||
compilerVersion: 8.2.2
|
||||
setup-method: hvr-ppa
|
||||
allow-failure: false
|
||||
- compiler: ghc-8.0.2
|
||||
compilerKind: ghc
|
||||
compilerVersion: 8.0.2
|
||||
setup-method: hvr-ppa
|
||||
allow-failure: false
|
||||
- compiler: ghc-7.10.3
|
||||
compilerKind: ghc
|
||||
compilerVersion: 7.10.3
|
||||
setup-method: hvr-ppa
|
||||
allow-failure: false
|
||||
- compiler: ghc-7.8.4
|
||||
compilerKind: ghc
|
||||
compilerVersion: 7.8.4
|
||||
setup-method: hvr-ppa
|
||||
allow-failure: false
|
||||
- compiler: ghc-7.6.3
|
||||
compilerKind: ghc
|
||||
compilerVersion: 7.6.3
|
||||
setup-method: hvr-ppa
|
||||
allow-failure: false
|
||||
- compiler: ghc-7.4.2
|
||||
compilerKind: ghc
|
||||
compilerVersion: 7.4.2
|
||||
setup-method: hvr-ppa
|
||||
allow-failure: false
|
||||
- compiler: ghc-7.2.2
|
||||
compilerKind: ghc
|
||||
compilerVersion: 7.2.2
|
||||
setup-method: hvr-ppa
|
||||
allow-failure: false
|
||||
- compiler: ghc-7.0.4
|
||||
compilerKind: ghc
|
||||
compilerVersion: 7.0.4
|
||||
setup-method: hvr-ppa
|
||||
allow-failure: false
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: apt
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
|
||||
if [ "${{ matrix.setup-method }}" = ghcup ]; then
|
||||
mkdir -p "$HOME/.ghcup/bin"
|
||||
curl -sL https://downloads.haskell.org/ghcup/0.1.18.0/x86_64-linux-ghcup-0.1.18.0 > "$HOME/.ghcup/bin/ghcup"
|
||||
chmod a+x "$HOME/.ghcup/bin/ghcup"
|
||||
"$HOME/.ghcup/bin/ghcup" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml;
|
||||
"$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
|
||||
"$HOME/.ghcup/bin/ghcup" install cabal 3.9.0.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
|
||||
else
|
||||
apt-add-repository -y 'ppa:hvr/ghc'
|
||||
apt-get update
|
||||
apt-get install -y "$HCNAME"
|
||||
mkdir -p "$HOME/.ghcup/bin"
|
||||
curl -sL https://downloads.haskell.org/ghcup/0.1.18.0/x86_64-linux-ghcup-0.1.18.0 > "$HOME/.ghcup/bin/ghcup"
|
||||
chmod a+x "$HOME/.ghcup/bin/ghcup"
|
||||
"$HOME/.ghcup/bin/ghcup" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml;
|
||||
"$HOME/.ghcup/bin/ghcup" install cabal 3.9.0.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
|
||||
fi
|
||||
env:
|
||||
HCKIND: ${{ matrix.compilerKind }}
|
||||
HCNAME: ${{ matrix.compiler }}
|
||||
HCVER: ${{ matrix.compilerVersion }}
|
||||
- name: Set PATH and environment variables
|
||||
run: |
|
||||
echo "$HOME/.cabal/bin" >> $GITHUB_PATH
|
||||
echo "LANG=C.UTF-8" >> "$GITHUB_ENV"
|
||||
echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
|
||||
echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
|
||||
HCDIR=/opt/$HCKIND/$HCVER
|
||||
if [ "${{ matrix.setup-method }}" = ghcup ]; then
|
||||
HC=$HOME/.ghcup/bin/$HCKIND-$HCVER
|
||||
echo "HC=$HC" >> "$GITHUB_ENV"
|
||||
echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER" >> "$GITHUB_ENV"
|
||||
echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER" >> "$GITHUB_ENV"
|
||||
echo "CABAL=$HOME/.ghcup/bin/cabal-3.9.0.0 -vnormal+nowrap" >> "$GITHUB_ENV"
|
||||
else
|
||||
HC=$HCDIR/bin/$HCKIND
|
||||
echo "HC=$HC" >> "$GITHUB_ENV"
|
||||
echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
|
||||
echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
|
||||
echo "CABAL=$HOME/.ghcup/bin/cabal-3.9.0.0 -vnormal+nowrap" >> "$GITHUB_ENV"
|
||||
fi
|
||||
|
||||
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
|
||||
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
|
||||
echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
|
||||
echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
|
||||
if [ $((HCNUMVER >= 90600)) -ne 0 ] ; then echo "HEADHACKAGE=true" >> "$GITHUB_ENV" ; else echo "HEADHACKAGE=false" >> "$GITHUB_ENV" ; fi
|
||||
echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
|
||||
echo "GHCJSARITH=0" >> "$GITHUB_ENV"
|
||||
env:
|
||||
HCKIND: ${{ matrix.compilerKind }}
|
||||
HCNAME: ${{ matrix.compiler }}
|
||||
HCVER: ${{ matrix.compilerVersion }}
|
||||
- name: env
|
||||
run: |
|
||||
env
|
||||
- name: write cabal config
|
||||
run: |
|
||||
mkdir -p $CABAL_DIR
|
||||
cat >> $CABAL_CONFIG <<EOF
|
||||
remote-build-reporting: anonymous
|
||||
write-ghc-environment-files: never
|
||||
remote-repo-cache: $CABAL_DIR/packages
|
||||
logs-dir: $CABAL_DIR/logs
|
||||
world-file: $CABAL_DIR/world
|
||||
extra-prog-path: $CABAL_DIR/bin
|
||||
symlink-bindir: $CABAL_DIR/bin
|
||||
installdir: $CABAL_DIR/bin
|
||||
build-summary: $CABAL_DIR/logs/build.log
|
||||
store-dir: $CABAL_DIR/store
|
||||
install-dirs user
|
||||
prefix: $CABAL_DIR
|
||||
repository hackage.haskell.org
|
||||
url: http://hackage.haskell.org/
|
||||
EOF
|
||||
if $HEADHACKAGE; then
|
||||
cat >> $CABAL_CONFIG <<EOF
|
||||
repository head.hackage.ghc.haskell.org
|
||||
url: https://ghc.gitlab.haskell.org/head.hackage/
|
||||
secure: True
|
||||
root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d
|
||||
26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329
|
||||
f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89
|
||||
key-threshold: 3
|
||||
active-repositories: hackage.haskell.org, head.hackage.ghc.haskell.org:override
|
||||
EOF
|
||||
fi
|
||||
cat >> $CABAL_CONFIG <<EOF
|
||||
program-default-options
|
||||
ghc-options: $GHCJOBS +RTS -M3G -RTS
|
||||
EOF
|
||||
cat $CABAL_CONFIG
|
||||
- name: versions
|
||||
run: |
|
||||
$HC --version || true
|
||||
$HC --print-project-git-commit-id || true
|
||||
$CABAL --version || true
|
||||
- name: update cabal index
|
||||
run: |
|
||||
$CABAL v2-update -v
|
||||
- name: install cabal-plan
|
||||
run: |
|
||||
mkdir -p $HOME/.cabal/bin
|
||||
curl -sL https://github.com/haskell-hvr/cabal-plan/releases/download/v0.6.2.0/cabal-plan-0.6.2.0-x86_64-linux.xz > cabal-plan.xz
|
||||
echo 'de73600b1836d3f55e32d80385acc055fd97f60eaa0ab68a755302685f5d81bc cabal-plan.xz' | sha256sum -c -
|
||||
xz -d < cabal-plan.xz > $HOME/.cabal/bin/cabal-plan
|
||||
rm -f cabal-plan.xz
|
||||
chmod a+x $HOME/.cabal/bin/cabal-plan
|
||||
cabal-plan --version
|
||||
- name: checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: source
|
||||
- name: initial cabal.project for sdist
|
||||
run: |
|
||||
touch cabal.project
|
||||
echo "packages: $GITHUB_WORKSPACE/source/." >> cabal.project
|
||||
cat cabal.project
|
||||
- name: sdist
|
||||
run: |
|
||||
mkdir -p sdist
|
||||
$CABAL sdist all --output-dir $GITHUB_WORKSPACE/sdist
|
||||
- name: unpack
|
||||
run: |
|
||||
mkdir -p unpacked
|
||||
find sdist -maxdepth 1 -type f -name '*.tar.gz' -exec tar -C $GITHUB_WORKSPACE/unpacked -xzvf {} \;
|
||||
- name: generate cabal.project
|
||||
run: |
|
||||
PKGDIR_ini="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/ini-[0-9.]*')"
|
||||
echo "PKGDIR_ini=${PKGDIR_ini}" >> "$GITHUB_ENV"
|
||||
rm -f cabal.project cabal.project.local
|
||||
touch cabal.project
|
||||
touch cabal.project.local
|
||||
echo "packages: ${PKGDIR_ini}" >> cabal.project
|
||||
if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package ini" >> cabal.project ; fi
|
||||
if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
|
||||
cat >> cabal.project <<EOF
|
||||
EOF
|
||||
if $HEADHACKAGE; then
|
||||
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project
|
||||
fi
|
||||
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(ini)$/; }' >> cabal.project.local
|
||||
cat cabal.project
|
||||
cat cabal.project.local
|
||||
- name: dump install plan
|
||||
run: |
|
||||
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all
|
||||
cabal-plan
|
||||
- name: restore cache
|
||||
uses: actions/cache/restore@v3
|
||||
with:
|
||||
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
|
||||
path: ~/.cabal/store
|
||||
restore-keys: ${{ runner.os }}-${{ matrix.compiler }}-
|
||||
- name: install dependencies
|
||||
run: |
|
||||
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --dependencies-only -j2 all
|
||||
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dependencies-only -j2 all
|
||||
- name: build w/o tests
|
||||
run: |
|
||||
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
|
||||
- name: build
|
||||
run: |
|
||||
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always
|
||||
- name: tests
|
||||
run: |
|
||||
$CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct
|
||||
- name: cabal check
|
||||
run: |
|
||||
cd ${PKGDIR_ini} || false
|
||||
${CABAL} -vnormal check
|
||||
- name: haddock
|
||||
run: |
|
||||
$CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
|
||||
- name: unconstrained build
|
||||
run: |
|
||||
rm -f cabal.project.local
|
||||
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
|
||||
- name: save cache
|
||||
uses: actions/cache/save@v3
|
||||
if: always()
|
||||
with:
|
||||
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
|
||||
path: ~/.cabal/store
|
43
.github/workflows/haskell.yml
vendored
Normal file
43
.github/workflows/haskell.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
name: Haskell CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-haskell@v1
|
||||
with:
|
||||
ghc-version: '8.10.3'
|
||||
cabal-version: '3.2'
|
||||
|
||||
- name: Cache
|
||||
uses: actions/cache@v3
|
||||
env:
|
||||
cache-name: cache-cabal
|
||||
with:
|
||||
path: ~/.cabal
|
||||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/cabal.project') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-build-${{ env.cache-name }}-
|
||||
${{ runner.os }}-build-
|
||||
${{ runner.os }}-
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
cabal update
|
||||
cabal build --only-dependencies --enable-tests --enable-benchmarks
|
||||
- name: Build
|
||||
run: cabal build --enable-tests --enable-benchmarks all
|
||||
- name: Run tests
|
||||
run: cabal test all
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -10,3 +10,4 @@ tags
|
||||
.cabal-sandbox/
|
||||
cabal.sandbox.config
|
||||
.stack-work/
|
||||
/dist-newstyle/
|
||||
|
31
CHANGELOG.md
Normal file
31
CHANGELOG.md
Normal file
@ -0,0 +1,31 @@
|
||||
## 0.5.0
|
||||
|
||||
_2023-02-08, Chris Martin_
|
||||
|
||||
The behavior of `(<>)` for the `Ini` type has changed
|
||||
[#2](https://github.com/andreasabel/ini/issues/2)
|
||||
|
||||
- `<>` 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.
|
||||
|
||||
Tested with GHC 7.0 - ghc-9.6.0.20230128.
|
||||
|
||||
## 0.4.2
|
||||
|
||||
_2022-07-26, Andreas Abel_
|
||||
|
||||
- Fail parsing if the input is not completely consumed [#30](https://github.com/chrisdone/ini/pull/30)
|
||||
- Print global values as well [#28](https://github.com/chrisdone/ini/pull/28)
|
||||
|
||||
Tested with GHC 7.0 - 9.4.1 RC1.
|
||||
|
||||
## 0.4.1
|
||||
|
||||
_2019-01-02, Chris Done_
|
||||
|
||||
- Allow global section [#6](https://github.com/chrisdone/ini/issues/6)
|
@ -1,5 +1,10 @@
|
||||
ini [![Hackage](https://img.shields.io/hackage/v/ini.svg?style=flat)](https://hackage.haskell.org/package/ini)
|
||||
=====
|
||||
[![Hackage](https://img.shields.io/hackage/v/ini.svg?color=informational)](https://hackage.haskell.org/package/ini)
|
||||
[![ini on Stackage Nightly](https://stackage.org/package/ini/badge/nightly)](https://stackage.org/nightly/package/ini)
|
||||
[![Stackage LTS version](https://www.stackage.org/package/ini/badge/lts?label=Stackage)](https://www.stackage.org/package/ini)
|
||||
[![Haskell CI](https://github.com/andreasabel/ini/actions/workflows/haskell.yml/badge.svg)](https://github.com/andreasabel/ini/actions/workflows/haskell.yml)
|
||||
|
||||
ini
|
||||
===
|
||||
|
||||
Quick and easy configuration files in the INI format for Haskell.
|
||||
|
||||
|
1
cabal.haskell-ci
Normal file
1
cabal.haskell-ci
Normal file
@ -0,0 +1 @@
|
||||
branches: master
|
50
ini.cabal
50
ini.cabal
@ -1,29 +1,57 @@
|
||||
cabal-version: >= 1.10
|
||||
name: ini
|
||||
version: 0.4.2
|
||||
synopsis: Quick and easy configuration files in the INI format.
|
||||
version: 0.5.0
|
||||
synopsis: Configuration files in the INI format.
|
||||
description: Quick and easy configuration files in the INI format.
|
||||
license: BSD3
|
||||
license-file: LICENSE
|
||||
author: Chris Done
|
||||
maintainer: chrisdone@gmail.com
|
||||
homepage: http://github.com/chrisdone/ini
|
||||
bug-reports: http://github.com/chrisdone/ini/issues
|
||||
maintainer: Andreas Abel
|
||||
homepage: https://github.com/andreasabel/ini
|
||||
bug-reports: https://github.com/andreasabel/ini/issues
|
||||
copyright: 2013 Chris Done
|
||||
category: Data, Configuration
|
||||
build-type: Simple
|
||||
cabal-version: >=1.8
|
||||
|
||||
tested-with:
|
||||
GHC == 9.6.0
|
||||
GHC == 9.4.4
|
||||
GHC == 9.2.5
|
||||
GHC == 9.0.2
|
||||
GHC == 8.10.7
|
||||
GHC == 8.8.4
|
||||
GHC == 8.6.5
|
||||
GHC == 8.4.4
|
||||
GHC == 8.2.2
|
||||
GHC == 8.0.2
|
||||
GHC == 7.10.3
|
||||
GHC == 7.8.4
|
||||
GHC == 7.6.3
|
||||
GHC == 7.4.2
|
||||
GHC == 7.2.2
|
||||
GHC == 7.0.4
|
||||
|
||||
extra-source-files:
|
||||
CHANGELOG.md
|
||||
README.md
|
||||
|
||||
library
|
||||
hs-source-dirs: src/
|
||||
ghc-options: -Wall -O2
|
||||
extensions: OverloadedStrings
|
||||
exposed-modules: Data.Ini
|
||||
build-depends: base >= 4 && <5,
|
||||
attoparsec,
|
||||
text,
|
||||
unordered-containers
|
||||
if !impl(ghc >= 8)
|
||||
build-depends: semigroups >= 0.10 && < 0.19
|
||||
build-depends: semigroups >= 0.10 && < 0.21
|
||||
|
||||
default-language: Haskell98
|
||||
default-extensions: OverloadedStrings
|
||||
TypeOperators
|
||||
|
||||
ghc-options: -Wall
|
||||
if impl(ghc >= 8)
|
||||
ghc-options: -Wcompat
|
||||
|
||||
test-suite ini-test
|
||||
type: exitcode-stdio-1.0
|
||||
@ -34,6 +62,8 @@ test-suite ini-test
|
||||
, hspec
|
||||
, unordered-containers
|
||||
|
||||
default-language: Haskell98
|
||||
|
||||
source-repository head
|
||||
type: git
|
||||
location: http://github.com/chrisdone/ini.git
|
||||
location: https://github.com/andreasabel/ini.git
|
||||
|
@ -89,13 +89,18 @@ data Ini =
|
||||
}
|
||||
deriving (Show, Eq)
|
||||
|
||||
-- | '<>' concatenates the lists of entries within each section (since @ini-0.5.0@)
|
||||
instance Semigroup Ini where
|
||||
(<>) = mappend
|
||||
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}
|
||||
mappend x y =
|
||||
Ini {iniGlobals = mempty, iniSections = iniSections x <> iniSections y}
|
||||
mappend = (<>)
|
||||
|
||||
|
||||
{-# DEPRECATED #-}
|
||||
unIni :: Ini -> HashMap Text (HashMap Text Text)
|
||||
|
Loading…
Reference in New Issue
Block a user