-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Attoparsec parsers of time
--   
--   A collection of Attoparsec parsers for the "time" library
@package attoparsec-time
@version 1

module Attoparsec.Time.Text

-- | <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "05:03:58"
--   Right 05:03:58
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "05:03:58.02"
--   Right 05:03:58.02
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "05:03:58.020"
--   Right 05:03:58.02
--   </pre>
--   
--   Checks the elements to be within a proper range:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "24:00:00"
--   Left "timeOfDayInISO8601 &gt; hour: Failed reading: Validator \"hour\" failed on the following input: 24"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "00:00:60"
--   Left "timeOfDayInISO8601 &gt; second: Failed reading: Validator \"second\" failed on the following input: 60.000000000000"
--   </pre>
--   
--   Checks the elements to be of proper length:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "1:00:00"
--   Left "timeOfDayInISO8601 &gt; hour: Failed reading: Invalid decimal length"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "01:1:00"
--   Left "timeOfDayInISO8601 &gt; minute: Failed reading: Invalid decimal length"
--   </pre>
timeOfDayInISO8601 :: Parser TimeOfDay

-- | <pre>
--   &gt;&gt;&gt; parseOnly dayInISO8601 "2017-02-01"
--   Right 2017-02-01
--   </pre>
--   
--   Checks the elements to be in proper range:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly dayInISO8601 "2017-13-01"
--   Left "dayInISO8601: Failed reading: Invalid combination of year month and day: (2017,13,1)"
--   </pre>
--   
--   That is accounting for leap year:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly dayInISO8601 "2017-02-29"
--   Left "dayInISO8601: Failed reading: Invalid combination of year month and day: (2017,2,29)"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly dayInISO8601 "2016-02-29"
--   Right 2016-02-29
--   </pre>
dayInISO8601 :: Parser Day

-- | <pre>
--   &gt;&gt;&gt; parseOnly timeZoneInISO8601 "+01:00"
--   Right +0100
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeZoneInISO8601 "+0100"
--   Right +0100
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeZoneInISO8601 "-0100"
--   Right -0100
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeZoneInISO8601 "Z"
--   Right UTC
--   </pre>
timeZoneInISO8601 :: Parser TimeZone

-- | <pre>
--   &gt;&gt;&gt; parseOnly utcTimeInISO8601 "2017-02-01T05:03:58+01:00"
--   Right 2017-02-01 04:03:58 UTC
--   </pre>
utcTimeInISO8601 :: Parser UTCTime

-- | No suffix implies the "seconds" unit:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10"
--   Right 10s
--   </pre>
--   
--   Various units (seconds, minutes, hours, days):
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10s"
--   Right 10s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10m"
--   Right 600s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10h"
--   Right 36000s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10d"
--   Right 864000s
--   </pre>
--   
--   Metric prefixes to seconds (down to Pico):
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10ms"
--   Right 0.01s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10μs"
--   Right 0.00001s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10us"
--   Right 0.00001s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10ns"
--   Right 0.00000001s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10ps"
--   Right 0.00000000001s
--   </pre>
--   
--   Negative values:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "-1s"
--   Right -1s
--   </pre>
--   
--   Unsupported units:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "1k"
--   Left "diffTime: Failed reading: Unsupported unit: \"k\""
--   </pre>
diffTime :: Parser DiffTime

-- | No suffix implies the "seconds" unit:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10"
--   Right 10s
--   </pre>
--   
--   Various units (seconds, minutes, hours, days):
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10s"
--   Right 10s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10m"
--   Right 600s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10h"
--   Right 36000s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10d"
--   Right 864000s
--   </pre>
--   
--   Metric prefixes to seconds (down to Pico):
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10ms"
--   Right 0.01s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10μs"
--   Right 0.00001s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10us"
--   Right 0.00001s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10ns"
--   Right 0.00000001s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10ps"
--   Right 0.00000000001s
--   </pre>
--   
--   Negative values:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "-1s"
--   Right -1s
--   </pre>
--   
--   Unsupported units:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "1k"
--   Left "nominalDiffTime: Failed reading: Unsupported unit: \"k\""
--   </pre>
nominalDiffTime :: Parser NominalDiffTime


-- | ASCII ByteString Parsers.
module Attoparsec.Time.ByteString

-- | <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "05:03:58"
--   Right 05:03:58
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "05:03:58.02"
--   Right 05:03:58.02
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "05:03:58.020"
--   Right 05:03:58.02
--   </pre>
--   
--   Checks the elements to be within a proper range:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "24:00:00"
--   Left "timeOfDayInISO8601 &gt; hour: Failed reading: Validator \"hour\" failed on the following input: 24"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "00:00:60"
--   Left "timeOfDayInISO8601 &gt; second: Failed reading: Validator \"second\" failed on the following input: 60.000000000000"
--   </pre>
--   
--   Checks the elements to be of proper length:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "1:00:00"
--   Left "timeOfDayInISO8601 &gt; hour: Failed reading: Not all chars are valid decimals"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeOfDayInISO8601 "01:1:00"
--   Left "timeOfDayInISO8601 &gt; minute: Failed reading: Not all chars are valid decimals"
--   </pre>
timeOfDayInISO8601 :: Parser TimeOfDay

-- | <pre>
--   &gt;&gt;&gt; parseOnly dayInISO8601 "2017-02-01"
--   Right 2017-02-01
--   </pre>
--   
--   Checks the elements to be in proper range:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly dayInISO8601 "2017-13-01"
--   Left "dayInISO8601: Failed reading: Invalid combination of year month and day: (2017,13,1)"
--   </pre>
--   
--   That is accounting for leap year:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly dayInISO8601 "2017-02-29"
--   Left "dayInISO8601: Failed reading: Invalid combination of year month and day: (2017,2,29)"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly dayInISO8601 "2016-02-29"
--   Right 2016-02-29
--   </pre>
dayInISO8601 :: Parser Day

-- | <pre>
--   &gt;&gt;&gt; parseOnly timeZoneInISO8601 "+01:00"
--   Right +0100
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeZoneInISO8601 "+0100"
--   Right +0100
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeZoneInISO8601 "-0100"
--   Right -0100
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly timeZoneInISO8601 "Z"
--   Right UTC
--   </pre>
timeZoneInISO8601 :: Parser TimeZone

-- | <pre>
--   &gt;&gt;&gt; parseOnly utcTimeInISO8601 "2017-02-01T05:03:58+01:00"
--   Right 2017-02-01 04:03:58 UTC
--   </pre>
utcTimeInISO8601 :: Parser UTCTime

-- | No suffix implies the "seconds" unit:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10"
--   Right 10s
--   </pre>
--   
--   Various units (seconds, minutes, hours, days):
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10s"
--   Right 10s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10m"
--   Right 600s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10h"
--   Right 36000s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10d"
--   Right 864000s
--   </pre>
--   
--   Metric prefixes to seconds (down to Pico):
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10ms"
--   Right 0.01s
--   </pre>
--   
--   Notice that "μs" is not supported, because it's not ASCII.
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10us"
--   Right 0.00001s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10ns"
--   Right 0.00000001s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "10ps"
--   Right 0.00000000001s
--   </pre>
--   
--   Negative values:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "-1s"
--   Right -1s
--   </pre>
--   
--   Unsupported units:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly diffTime "1k"
--   Left "diffTime: Failed reading: Unsupported unit: \"k\""
--   </pre>
diffTime :: Parser DiffTime

-- | No suffix implies the "seconds" unit:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10"
--   Right 10s
--   </pre>
--   
--   Various units (seconds, minutes, hours, days):
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10s"
--   Right 10s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10m"
--   Right 600s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10h"
--   Right 36000s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10d"
--   Right 864000s
--   </pre>
--   
--   Metric prefixes to seconds (down to Pico):
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10ms"
--   Right 0.01s
--   </pre>
--   
--   Notice that "μs" is not supported, because it's not ASCII.
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10us"
--   Right 0.00001s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10ns"
--   Right 0.00000001s
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "10ps"
--   Right 0.00000000001s
--   </pre>
--   
--   Negative values:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "-1s"
--   Right -1s
--   </pre>
--   
--   Unsupported units:
--   
--   <pre>
--   &gt;&gt;&gt; parseOnly nominalDiffTime "1k"
--   Left "nominalDiffTime: Failed reading: Unsupported unit: \"k\""
--   </pre>
nominalDiffTime :: Parser NominalDiffTime
