attoparsec-time-1: library/Attoparsec/Time/Pure.hs
module Attoparsec.Time.Pure where
import Attoparsec.Time.Prelude
import qualified Data.ByteString as A
{-# INLINE timeZone #-}
timeZone :: Bool -> Int -> Int -> TimeZone
timeZone positive hour minute =
minutesToTimeZone $
bool negate id positive $
hour * 60 + minute
{-# INLINE day #-}
day :: Int -> Int -> Int -> Day
day y m d =
fromGregorian (fromIntegral y) m d
{-# INLINE timeOfDay #-}
timeOfDay :: Int -> Int -> Pico -> TimeOfDay
timeOfDay =
TimeOfDay
{-# INLINE zonedTime #-}
zonedTime :: Day -> TimeOfDay -> TimeZone -> ZonedTime
zonedTime day tod tz =
ZonedTime (LocalTime day tod) tz
{-# INLINE utcTimeFromDayAndTimeOfDay #-}
utcTimeFromDayAndTimeOfDay :: Day -> TimeOfDay -> TimeZone -> UTCTime
utcTimeFromDayAndTimeOfDay day tod tz =
zonedTimeToUTC (zonedTime day tod tz)
{-# INLINE utcTimeFromComponents #-}
utcTimeFromComponents :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> TimeZone -> UTCTime
utcTimeFromComponents year month day hour minute second millisecond timeZone =
undefined
{-# INLINE decimalFromBytes #-}
decimalFromBytes :: Integral decimal => A.ByteString -> decimal
decimalFromBytes =
A.foldl' step 0
where
step a b =
a * 10 + fromIntegral b - 48
{-# INLINE word8IsAsciiDigit #-}
word8IsAsciiDigit :: Word8 -> Bool
word8IsAsciiDigit w =
w - 48 <= 9
{-# INLINE word8IsAsciiAlpha #-}
word8IsAsciiAlpha :: Word8 -> Bool
word8IsAsciiAlpha x =
(x - 97 <= 25) || (x - 65 <= 25)