git.iko.soy/typeable/timezone-olson
on master help sign in
.travis.ymlnew file+107
since splitsnapshots
unifiedsplit
@@ -0,0 +1,107 @@
1+# This Travis job script has been generated by a script via
2+#
3+# runghc make_travis_yml_2.hs 'timezone-olson.cabal'
4+#
5+# For more information, see https://github.com/hvr/multi-ghc-travis
6+#
7+language: c
8+sudo: false
9+
10+git:
11+ submodules: false # whether to recursively clone submodules
12+
13+cache:
14+ directories:
15+ - $HOME/.cabal/packages
16+ - $HOME/.cabal/store
17+
18+before_cache:
19+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log
20+ # remove files that are regenerated by 'cabal update'
21+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.*
22+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/*.json
23+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.cache
24+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar
25+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar.idx
26+
27+ - rm -rfv $HOME/.cabal/packages/head.hackage
28+
29+matrix:
30+ include:
31+ - compiler: "ghc-8.0.1"
32+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
33+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.0.1], sources: [hvr-ghc]}}
34+ - compiler: "ghc-8.0.2"
35+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
36+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.0.2], sources: [hvr-ghc]}}
37+ - compiler: "ghc-8.2.1"
38+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
39+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.2.1], sources: [hvr-ghc]}}
40+ - compiler: "ghc-8.2.2"
41+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
42+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.2.2], sources: [hvr-ghc]}}
43+ - compiler: "ghc-8.4.1"
44+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
45+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.4.1], sources: [hvr-ghc]}}
46+
47+before_install:
48+ - HC=${CC}
49+ - HCPKG=${HC/ghc/ghc-pkg}
50+ - unset CC
51+ - ROOTDIR=$(pwd)
52+ - mkdir -p $HOME/.local/bin
53+ - "PATH=/opt/ghc/bin:/opt/ghc-ppa-tools/bin:$HOME/local/bin:$PATH"
54+ - HCNUMVER=$(( $(${HC} --numeric-version|sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+).*/\1 * 10000 + \2 * 100 + \3/') ))
55+ - echo $HCNUMVER
56+
57+install:
58+ - cabal --version
59+ - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
60+ - BENCH=${BENCH---enable-benchmarks}
61+ - TEST=${TEST---enable-tests}
62+ - HADDOCK=${HADDOCK-true}
63+ - INSTALLED=${INSTALLED-true}
64+ - GHCHEAD=${GHCHEAD-false}
65+ - travis_retry cabal update -v
66+ - "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config"
67+ - rm -fv cabal.project cabal.project.local
68+ - grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
69+ - "printf 'packages: \".\"\\n' > cabal.project"
70+ - cat cabal.project
71+ - if [ -f "./configure.ac" ]; then
72+ (cd "." && autoreconf -i);
73+ fi
74+ - rm -f cabal.project.freeze
75+ - cabal new-build -w ${HC} ${TEST} ${BENCH} --project-file="cabal.project" --dep -j2 all
76+ - cabal new-build -w ${HC} --disable-tests --disable-benchmarks --project-file="cabal.project" --dep -j2 all
77+ - rm -rf .ghc.environment.* "."/dist
78+ - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
79+
80+# Here starts the actual work to be performed for the package under test;
81+# any command which exits with a non-zero exit code causes the build to fail.
82+script:
83+ # test that source-distributions can be generated
84+ - (cd "." && cabal sdist)
85+ - mv "."/dist/timezone-olson-*.tar.gz ${DISTDIR}/
86+ - cd ${DISTDIR} || false
87+ - find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
88+ - "printf 'packages: timezone-olson-*/*.cabal\\n' > cabal.project"
89+ - cat cabal.project
90+ # this builds all libraries and executables (without tests/benchmarks)
91+ - cabal new-build -w ${HC} --disable-tests --disable-benchmarks all
92+
93+ # Build with installed constraints for packages in global-db
94+ - if $INSTALLED; then echo cabal new-build -w ${HC} --disable-tests --disable-benchmarks $(${HCPKG} list --global --simple-output --names-only | sed 's/\([a-zA-Z0-9-]\{1,\}\) */--constraint="\1 installed" /g') all | sh; else echo "Not building with installed constraints"; fi
95+
96+ # build & run tests, build benchmarks
97+ - cabal new-build -w ${HC} ${TEST} ${BENCH} all
98+
99+ # cabal check
100+ - (cd timezone-olson-* && cabal check)
101+
102+ # haddock
103+ - rm -rf ./dist-newstyle
104+ - if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} all; else echo "Skipping haddock generation";fi
105+
106+# REGENDATA ["timezone-olson.cabal"]
107+# EOF
Data/Time/LocalTime/TimeZone/Olson.hs+2−2
@@ -1,7 +1,7 @@
1-----------------------------------------------------------------------------
1-----------------------------------------------------------------------------
2-- |
2-- |
3-- Module : Data.Time.LocalTime.TimeZone.Olson
3-- Module : Data.Time.LocalTime.TimeZone.Olson
4−-- Copyright : Yitzchak Gale 2010
4+-- Copyright : Yitzchak Gale 2018
5--
5--
6-- Maintainer : Yitzchak Gale <gale@sefer.org>
6-- Maintainer : Yitzchak Gale <gale@sefer.org>
7-- Portability : portable
7-- Portability : portable
@@ -13,7 +13,7 @@
13-- converting the parsed data into @TimeZoneSeries@ and @TimeZone@
13-- converting the parsed data into @TimeZoneSeries@ and @TimeZone@
14-- objects.
14-- objects.
15
15
16−{- Copyright (c) 2010 Yitzchak Gale. All rights reserved.
16+{- Copyright (c) 2018 Yitzchak Gale. All rights reserved.
17For licensing information, see the BSD3-style license in the file
17For licensing information, see the BSD3-style license in the file
18LICENSE that was originally distributed by the author together with
18LICENSE that was originally distributed by the author together with
19this file. -}
19this file. -}
Data/Time/LocalTime/TimeZone/Olson/Parse.hs+2−2
@@ -3,7 +3,7 @@
3-----------------------------------------------------------------------------
3-----------------------------------------------------------------------------
4-- |
4-- |
5-- Module : Data.Time.LocalTime.TimeZone.Olson.Parse
5-- Module : Data.Time.LocalTime.TimeZone.Olson.Parse
6−-- Copyright : Yitzchak Gale 2010
6+-- Copyright : Yitzchak Gale 2018
7--
7--
8-- Maintainer : Yitzchak Gale <gale@sefer.org>
8-- Maintainer : Yitzchak Gale <gale@sefer.org>
9-- Portability : portable
9-- Portability : portable
@@ -14,7 +14,7 @@
14-- <http://www.twinsun.com/tz/tz-link.htm>. Functions are provided for
14-- <http://www.twinsun.com/tz/tz-link.htm>. Functions are provided for
15-- converting the parsed data into 'TimeZoneSeries' objects.
15-- converting the parsed data into 'TimeZoneSeries' objects.
16
16
17−{- Copyright (c) 2010 Yitzchak Gale. All rights reserved.
17+{- Copyright (c) 2018 Yitzchak Gale. All rights reserved.
18For licensing information, see the BSD3-style license in the file
18For licensing information, see the BSD3-style license in the file
19LICENSE that was originally distributed by the author together with
19LICENSE that was originally distributed by the author together with
20this file. -}
20this file. -}
Data/Time/LocalTime/TimeZone/Olson/Render.hs+2−2
@@ -2,7 +2,7 @@
2-----------------------------------------------------------------------------
2-----------------------------------------------------------------------------
3-- |
3-- |
4-- Module : Data.Time.LocalTime.TimeZone.Olson.Render
4-- Module : Data.Time.LocalTime.TimeZone.Olson.Render
5−-- Copyright : Yitzchak Gale 2010
5+-- Copyright : Yitzchak Gale 2018
6--
6--
7-- Maintainer : Yitzchak Gale <gale@sefer.org>
7-- Maintainer : Yitzchak Gale <gale@sefer.org>
8-- Portability : portable
8-- Portability : portable
@@ -12,7 +12,7 @@
12-- Unix-like systems. For more information about this format, see
12-- Unix-like systems. For more information about this format, see
13-- <http://www.twinsun.com/tz/tz-link.htm>.
13-- <http://www.twinsun.com/tz/tz-link.htm>.
14
14
15−{- Copyright (c) 2010 Yitzchak Gale. All rights reserved.
15+{- Copyright (c) 2018ZZ Yitzchak Gale. All rights reserved.
16For licensing information, see the BSD3-style license in the file
16For licensing information, see the BSD3-style license in the file
17LICENSE that was originally distributed by the author together with
17LICENSE that was originally distributed by the author together with
18this file. -}
18this file. -}
Data/Time/LocalTime/TimeZone/Olson/Types.hs+18−2
@@ -1,8 +1,9 @@
1{-# OPTIONS_HADDOCK hide #-}
1{-# OPTIONS_HADDOCK hide #-}
2+{-# LANGUAGE CPP #-}
2-----------------------------------------------------------------------------
3-----------------------------------------------------------------------------
3-- |
4-- |
4-- Module : Data.Time.LocalTime.TimeZone.Olson.Types
5-- Module : Data.Time.LocalTime.TimeZone.Olson.Types
5−-- Copyright : Yitzchak Gale 2010
6+-- Copyright : Yitzchak Gale 2018
6--
7--
7-- Maintainer : Yitzchak Gale <gale@sefer.org>
8-- Maintainer : Yitzchak Gale <gale@sefer.org>
8-- Portability : portable
9-- Portability : portable
@@ -14,7 +15,7 @@
14--
15--
15-- Both Version 1 and Version 2 timezone data can be represented.
16-- Both Version 1 and Version 2 timezone data can be represented.
16
17
17−{- Copyright (c) 2010 Yitzchak Gale. All rights reserved.
18+{- Copyright (c) 2018 Yitzchak Gale. All rights reserved.
18For licensing information, see the BSD3-style license in the file
19For licensing information, see the BSD3-style license in the file
19LICENSE that was originally distributed by the author together with
20LICENSE that was originally distributed by the author together with
20this file. -}
21this file. -}
@@ -36,6 +37,9 @@ module Data.Time.LocalTime.TimeZone.Olson.Types
36)
37)
37where
38where
38
39
40+#if MIN_VERSION_base(4,11,0)
41+import Data.Semigroup (Semigroup(..))
42+#endif
39import Data.Monoid (Monoid(..))
43import Data.Monoid (Monoid(..))
40import Control.Monad (mplus)
44import Control.Monad (mplus)
41
45
@@ -71,6 +75,17 @@ data OlsonData =
71 }
75 }
72 deriving (Eq, Show)
76 deriving (Eq, Show)
73
77
78+#if MIN_VERSION_base(4,11,0)
79+instance Semigroup OlsonData where
80+ OlsonData a b c d <> OlsonData a' b' c' d' =
81+ OlsonData (a ++ map (shiftBy $ length b) a')
82+ (b ++ b') (c ++ c') (d `mplus` d')
83+ where
84+ shiftBy n trans = trans {transIndex = n + transIndex trans}
85+
86+instance Monoid OlsonData where
87+ mempty = OlsonData [] [] [] Nothing
88+#else
74instance Monoid OlsonData where
89instance Monoid OlsonData where
75 mempty = OlsonData [] [] [] Nothing
90 mempty = OlsonData [] [] [] Nothing
76 mappend (OlsonData a b c d ) (OlsonData a' b' c' d') =
91 mappend (OlsonData a b c d ) (OlsonData a' b' c' d') =
@@ -78,6 +93,7 @@ instance Monoid OlsonData where
78 (b ++ b') (c ++ c') (d `mplus` d')
93 (b ++ b') (c ++ c') (d `mplus` d')
79 where
94 where
80 shiftBy n trans = trans {transIndex = n + transIndex trans}
95 shiftBy n trans = trans {transIndex = n + transIndex trans}
96+#endif
81
97
82-- | A @Transition@ represents a moment when the clocks change in a
98-- | A @Transition@ represents a moment when the clocks change in a
83-- timezone. It consists of a Unix timestamp value that indicates the
99-- timezone. It consists of a Unix timestamp value that indicates the
LICENSE+1−1
@@ -1,4 +1,4 @@
1−Copyright (c) 2010 Yitzchak Gale. All rights reserved.
1+Copyright (c) 2010-2018 Yitzchak Gale. All rights reserved.
2
2
3Redistribution and use in source and binary forms, with or without
3Redistribution and use in source and binary forms, with or without
4modification, are permitted provided that the following conditions are
4modification, are permitted provided that the following conditions are
README.md+18−24
@@ -1,39 +1,33 @@
1−timezone-olson version 0.1.0
1+# timezone-olson
2+
3+On Hackage: [timezone-olson](http://hackage.haskell.org/package/timezone-olson)
2
4
3This package provides a parser and renderer for binary Olson timezone
5This package provides a parser and renderer for binary Olson timezone
4files whose format is specified by the tzfile(5) man page on Unix-like
6files whose format is specified by the tzfile(5) man page on Unix-like
5systems. For more information about this format, see
7systems. For more information about this format, see
8+[the IANA timezone database site](https://www.iana.org/time-zones).
9+
6−<http://www.twinsun.com/tz/tz-link.htm>. Functions are provided for
10+Functions are provided for
7−converting the parsed data into 'TimeZoneSeries' objects from the
11+converting the parsed data into `TimeZoneSeries` objects from the
12+[timezone-series](http://hackage.haskell.org/package/timezone-series)
8−timezone-series package. On many platforms, binary Olson timezone
13+package. On many platforms, binary Olson timezone
9files suitable for use with this package are available in the
14files suitable for use with this package are available in the
10−directory /usr/share/zoneinfo and its subdirectories on your computer.
15+directory `/usr/share/zoneinfo` and its subdirectories on your computer.
11
16
12−This version of timezone-olson is highly experimental. Expect there
17+See also the
13−to be bugs, and do not rely on any stability of the exposed
18+[timezone-olson-th](http://hackage.haskell.org/package/timezone-olson-th)
14−interfaces.
19+package for a way to include timezone informaton from a binary Olson
20+timezone file at compile time.
21+
22+Copyright (c) 2010-2018 Yitzchak Gale. All rights reserved.
15
23
16−Copyright (c) 2010 Yitzchak Gale. All rights reserved.
17For licensing information, see the BSD3-style license in the file
24For licensing information, see the BSD3-style license in the file
18LICENSE that was originally distributed by the author together with
25LICENSE that was originally distributed by the author together with
19this file.
26this file.
20
27
21−This package is part of the time-ng project:
28+This package is part of the [time-ng project](http://projects.haskell.org/time-ng/).
22−http://projects.haskell.org/time-ng/
23−
24−Send suggestions, bug reports, and patches to:
25−yitz@community.haskell.org
26−
27−INSTALLATION:
28−
29−To install the latest version of this package, make sure that
30−cabal-install is installed on your system (it is if you have installed
31−the Haskell Platform) and type the commands:
32−
33−cabal update
34−cabal install timezone-olson
35
29
36−TESTING UTILITIES:
30+## Testing utilities
37
31
38This package also provides two Haskell files, each of which can be
32This package also provides two Haskell files, each of which can be
39compiled into a command-line utility that might be helpful for testing
33compiled into a command-line utility that might be helpful for testing
timezone-olson.cabal+13−4
@@ -1,5 +1,5 @@
1Name: timezone-olson
1Name: timezone-olson
2−Version: 0.1.7
2+Version: 0.1.9
3Synopsis: A pure Haskell parser and renderer for binary Olson timezone files
3Synopsis: A pure Haskell parser and renderer for binary Olson timezone files
4Description: A parser and renderer for binary Olson timezone
4Description: A parser and renderer for binary Olson timezone
5 files whose format is specified by the tzfile(5)
5 files whose format is specified by the tzfile(5)
@@ -12,25 +12,34 @@ Description: A parser and renderer for binary Olson timezone
12 files suitable for use with this package are
12 files suitable for use with this package are
13 available in the directory /usr/share/zoneinfo
13 available in the directory /usr/share/zoneinfo
14 and its subdirectories on your computer.
14 and its subdirectories on your computer.
15+ For a way to read binary Olson timezone files at compile
16+ time, see the timezone-olson-th package
17+ (<http://hackage.haskell.org/package/timezone-olson-th>).
15Homepage: http://projects.haskell.org/time-ng/
18Homepage: http://projects.haskell.org/time-ng/
16License: BSD3
19License: BSD3
17License-file: LICENSE
20License-file: LICENSE
18Author: Yitzchak Gale
21Author: Yitzchak Gale
19Maintainer: yitz@sefer.org
22Maintainer: yitz@sefer.org
20−Copyright: Copyright (c) 2010 -2015Yitzchak Gale. All rights reserved.
23+Copyright: Copyright (c) 2010-2018 Yitzchak Gale. All rights reserved.
21Category: Data
24Category: Data
22Build-type: Simple
25Build-type: Simple
23Extra-source-files: README.md, catTZ.hs, hzdump.hs
26Extra-source-files: README.md, catTZ.hs, hzdump.hs
24Cabal-version: >=1.10
27Cabal-version: >=1.10
28+Tested-with: GHC > 8.0 && < 8.5
29+
30+Source-repository HEAD
31+ type: git
32+ location: https://github.com/ygale/timezone-olson.git
25
33
26Library
34Library
35+ Default-language: Haskell2010
27 Exposed-modules: Data.Time.LocalTime.TimeZone.Olson
36 Exposed-modules: Data.Time.LocalTime.TimeZone.Olson
28 , Data.Time.LocalTime.TimeZone.Olson.Parse
37 , Data.Time.LocalTime.TimeZone.Olson.Parse
29 , Data.Time.LocalTime.TimeZone.Olson.Render
38 , Data.Time.LocalTime.TimeZone.Olson.Render
30 , Data.Time.LocalTime.TimeZone.Olson.Types
39 , Data.Time.LocalTime.TimeZone.Olson.Types
31 Build-depends: base >= 3.0 && < 5.0,
40 Build-depends: base >= 3.0 && < 5.0,
32 timezone-series >= 0.1.0 && < 0.2,
41 timezone-series >= 0.1.0 && < 0.2,
33− time >= 1.1.4 && < 1.5,
42+ time >= 1.6 && < 1.10,
34− binary >= 0.4.1 && < 0.8,
43+ binary >= 0.4.1 && < 0.9,
35 bytestring >= 0.9 && < 1.0,
44 bytestring >= 0.9 && < 1.0,
36 extensible-exceptions >= 0.1.0 && < 0.2
45 extensible-exceptions >= 0.1.0 && < 0.2