validity-time (empty) → 0.0.0.0
raw patch · 8 files changed
+177/−0 lines, 8 filesdep +basedep +timedep +validitysetup-changed
Dependencies added: base, time, validity
Files
- LICENSE +21/−0
- Setup.hs +3/−0
- src/Data/Validity/Time.hs +11/−0
- src/Data/Validity/Time/Calendar.hs +11/−0
- src/Data/Validity/Time/Clock.hs +30/−0
- src/Data/Validity/Time/Format.hs +24/−0
- src/Data/Validity/Time/LocalTime.hs +44/−0
- validity-time.cabal +33/−0
+ LICENSE view
@@ -0,0 +1,21 @@+The MIT License (MIT)++Copyright (c) 2017 Tom Sydney Kerckhove++Permission is hereby granted, free of charge, to any person obtaining a copy+of this software and associated documentation files (the "Software"), to deal+in the Software without restriction, including without limitation the rights+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+copies of the Software, and to permit persons to whom the Software is+furnished to do so, subject to the following conditions:++The above copyright notice and this permission notice shall be included in all+copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE+SOFTWARE.
+ Setup.hs view
@@ -0,0 +1,3 @@+import Distribution.Simple++main = defaultMain
+ src/Data/Validity/Time.hs view
@@ -0,0 +1,11 @@+{-# OPTIONS_GHC -Wno-orphans #-}+{-# OPTIONS_GHC -Wno-dodgy-exports #-}++module Data.Validity.Time+ ( module X+ ) where++import qualified Data.Validity.Time.Calendar as X ()+import qualified Data.Validity.Time.Clock as X ()+import qualified Data.Validity.Time.Format as X ()+import qualified Data.Validity.Time.LocalTime as X ()
+ src/Data/Validity/Time/Calendar.hs view
@@ -0,0 +1,11 @@+{-# OPTIONS_GHC -Wno-orphans #-}++module Data.Validity.Time.Calendar where++import Data.Validity++import Data.Time.Calendar++-- | Valid according to the 'Integer' it contains.+instance Validity Day where+ isValid (ModifiedJulianDay i) = isValid i
+ src/Data/Validity/Time/Clock.hs view
@@ -0,0 +1,30 @@+{-# OPTIONS_GHC -Wno-orphans #-}+{-# LANGUAGE RecordWildCards #-}++module Data.Validity.Time.Clock where++import Data.Validity++import Data.Time.Clock+import Data.Validity.Time.Calendar ()++-- | Valid according to the 'Rational' it contains.+instance Validity UniversalTime where+ isValid (ModJulianDate i) = isValid i++-- | Valid according to the validity of the result of 'diffTimeToPicoseconds'+instance Validity DiffTime where+ isValid = isValid . diffTimeToPicoseconds++instance Validity UTCTime where+ isValid UTCTime {..} =+ and+ [ isValid utctDay+ , isValid utctDayTime+ , diffTimeToPicoseconds utctDayTime >= 0+ , diffTimeToPicoseconds utctDayTime < 86401 * 10 ^ (12 :: Integer)+ ]++instance Validity NominalDiffTime where+ isValid = isValid . (round :: NominalDiffTime -> Integer)+ -- NominalDiffTime contains a 'Pico' but that constructorr is not exported so we can't do any better than this.
+ src/Data/Validity/Time/Format.hs view
@@ -0,0 +1,24 @@+{-# OPTIONS_GHC -Wno-orphans #-}+{-# LANGUAGE RecordWildCards #-}++module Data.Validity.Time.Format where++import Data.Validity++import Data.Time.Format++import Data.Validity.Time.LocalTime ()++-- | Valid according to the contained values+instance Validity TimeLocale where+ isValid TimeLocale {..} =+ and+ [ isValid wDays+ , isValid months+ , isValid amPm+ , isValid dateTimeFmt+ , isValid dateFmt+ , isValid timeFmt+ , isValid time12Fmt+ , isValid knownTimeZones+ ]
+ src/Data/Validity/Time/LocalTime.hs view
@@ -0,0 +1,44 @@+{-# OPTIONS_GHC -Wno-orphans #-}+{-# LANGUAGE RecordWildCards #-}++module Data.Validity.Time.LocalTime where++import Data.Validity++import Data.Time.LocalTime++import Data.Validity.Time.Calendar ()++-- | Valid according to the contained values.+instance Validity TimeZone where+ isValid TimeZone {..} =+ isValid timeZoneMinutes &&+ isValid timeZoneSummerOnly && isValid timeZoneName++-- | Valid according to the validity of contained values and these constraints:+--+-- * todHour : range 0 - 23+-- * todMin : range 0 - 59+-- * todSec : 0 <= todSec < 61,+instance Validity TimeOfDay where+ isValid TimeOfDay {..} =+ and+ [ isValid todHour+ , todHour >= 0+ , todHour <= 23+ , isValid todMin+ , todMin >= 0+ , todMin <= 59+ , isValid todSec+ , todSec >= 0+ , todSec < 61+ ]++-- | Valid according to the validity of contained values+instance Validity LocalTime where+ isValid LocalTime {..} = isValid localDay && isValid localTimeOfDay++-- | Valid according to the validity of contained values+instance Validity ZonedTime where+ isValid ZonedTime {..} =+ isValid zonedTimeToLocalTime && isValid zonedTimeZone
+ validity-time.cabal view
@@ -0,0 +1,33 @@+name: validity-time+version: 0.0.0.0+cabal-version: >=1.10+build-type: Simple+license: MIT+license-file: LICENSE+copyright: Copyright: (c) 2017 Tom Sydney Kerckhove+maintainer: syd.kerckhove@gmail.com+homepage: https://github.com/NorfairKing/validity#readme+synopsis: Validity instances for time+description:+ Please see README.md+category: Validity+author: Tom Sydney Kerckhove++source-repository head+ type: git+ location: https://github.com/NorfairKing/validity++library+ exposed-modules:+ Data.Validity.Time+ Data.Validity.Time.Calendar+ Data.Validity.Time.Clock+ Data.Validity.Time.Format+ Data.Validity.Time.LocalTime+ build-depends:+ base <5,+ validity -any,+ time -any+ default-language: Haskell2010+ hs-source-dirs: src+