packages feed

lens-datetime-0.2.1: lens-datetime.cabal

name: lens-datetime
version: 0.2.1
license: BSD3
license-file: LICENSE
author: Mihaly Barasz <klao@nilcons.com>
maintainer: Mihaly Barasz <klao@nilcons.com>
build-type: Simple
cabal-version: >= 1.6
category: Data, Lenses
stability: experimental
homepage: http://github.com/nilcons/lens-datetime
bug-reports: http://github.com/nilcons/lens-datetime/issues
synopsis: Lenses for Data.Time.* types

description:
  The @lens-datetime@ library provides a unified lens based accessors
  to the various types in @Data.Time.Clock@, @Data.Time.Calendar@ and
  @Data.Time.LocalTime@. This library only tries to make some of the
  common use-cases convenient, it doesn't aim for completeness. If you
  want completeness and/or efficiency try the @thyme@ package instead
  (<http://hackage.haskell.org/package/thyme>).
  .
  Demonstration of basic uses.
  .
  >import Control.Lens
  >import Data.Time
  >import Data.Time.Lens
  >
  >aDay :: Day
  >aDay = fromGregorian 2013 08 22
  >
  >aLocal :: LocalTime
  >aLocal = LocalTime aDay (TimeOfDay 13 45 28)
  >
  >aUTC :: UTCTime
  >aUTC = UTCTime aDay 7458.9
  .
  You can then do the following:
  .
  >> aLocal ^. years
  >2013
  >> aUTC ^. months
  >8
  >> aLocal & time .~ midnight
  >2013-08-22 00:00:00
  >> aUTC & days .~ 1 & months .~ 1
  >2013-01-01 02:04:18.9 UTC
  .
  You can manipulate the date-time values with proper roll-over
  behavior via the @FlexibleDateTime@ mechanism:
  .
  >> aLocal & flexDT.months +~ 12
  >2014-08-22 13:45:28
  >> aUTC & flexDT.days +~ 100
  >2013-11-30 02:04:18.9 UTC
  >> aLocal & flexDT.minutes +~ 120
  >2013-08-22 15:45:28
  >> aLocal & flexDT %~ ((days +~ 7) . (hours +~ 2))
  >2013-08-22 13:45:28

extra-source-files:
  README.md
  .gitignore

source-repository head
  type: git
  location: https://github.com/nilcons/lens-datetime.git

library
  ghc-options: -Wall

  build-depends:
      base >= 4.6 && < 5
    , time == 1.*
    , lens >= 3 && < 5

  exposed-modules:
    Data.Time.Lens