packages feed

xsd 0.6.1 → 0.6.2

raw patch · 3 files changed

+40/−8 lines, 3 files

Files

changelog.md view
@@ -1,3 +1,6 @@+0.6.2 (2021)+  * Add more string-like instances.+ 0.6.1 (2021)   * Add classy optics. 
src/Text/XML/XSD/DateTime.hs view
@@ -4,6 +4,7 @@ {-# LANGUAGE LambdaCase #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DefaultSignatures #-}+{-# LANGUAGE FlexibleInstances #-}  -- | XSD @dateTime@ data structure <http://www.w3.org/TR/xmlschema-2/#dateTime> module Text.XML.XSD.DateTime@@ -20,22 +21,34 @@ import Control.Applicative (pure, (<$>), (*>), (<|>)) import Control.Monad (Monad(..), when) import Control.Lens+    ( view,+      iso,+      prism',+      review,+      Iso',+      Lens',+      Prism',+      Traversal',+      Traversal1' ) import Data.Bool ( Bool(False, True), (&&), (||) )-import Data.Char (ord)+import Data.Char (Char, ord) import Data.Either(Either(..), either) import Data.Eq ( Eq(..) ) import Data.Fixed (Pico, showFixed) import Data.Function((.), id, ($), const)+import Data.Functor((<$)) import Data.Functor.Apply(WrappedApplicative(WrapApplicative, unwrapApplicative)) import Data.Int ( Int ) import Data.Maybe (Maybe(Nothing, Just)) import Data.Ord ( Ord((>), (<)) ) import Data.Text(Text)-import Data.Text.Lazy as TL(toStrict)+import qualified Data.Text.Lazy as TL(Text, toStrict) import Data.Text.Lazy.Builder(Builder, toLazyText, fromString) import Data.Text.Lazy.Builder.Int (decimal)+import Data.Text.Lens ( unpacked, IsText(packed) ) import qualified Data.Text.Read as TR(decimal) import Data.Semigroup ((<>))+import Data.String(String) import Data.Time     ( addDays,       fromGregorian,@@ -267,7 +280,7 @@           DateTime           -> Text         toText =-          toStrict . toLazyText . dtBuilder+          TL.toStrict . toLazyText . dtBuilder             where               dtBuilder (DtZoned uTime) = ltBuilder (utcToLocalTime utc uTime) <> "Z"               dtBuilder (DtUnzoned lTime) = ltBuilder lTime@@ -286,6 +299,22 @@                     <> buildSeconds sss     in prism' toText (either (const Nothing) Just . parse (parseDateTime <|> fail "bad date time") "DateTime") +instance ManyDateTime TL.Text where+  _DateTime_ =+    _DateTime++instance AsDateTime TL.Text where+  _DateTime =+    unpacked . (packed :: Iso' String Text) . _DateTime++instance ManyDateTime [Char] where+  _DateTime_ =+    _DateTime++instance AsDateTime [Char] where+  _DateTime =+    (packed :: Iso' String Text) . _DateTime+ buildSeconds ::   Pico   -> Builder@@ -323,11 +352,11 @@   (Monad p, CharParsing p) =>   p (Maybe Pico) parseOffset =-  (eof *> pure Nothing)+  (Nothing <$ eof)   <|>-  (char 'Z' *> pure (Just 0))+  (Just 0 <$ char 'Z')    <|>-  (do sign <- (char '+' *> pure 1) <|> (char '-' *> pure (-1))+  (do sign <- (1 <$ char '+') <|> ((-1) <$ char '-')       hh <- fromIntegral <$> p2imax 14       _ <- char ':'       mm <- fromIntegral <$> p2imax (if hh == 14 then 0 else 59)@@ -345,7 +374,7 @@         c == x       lengthGT4_c1 _  _ =         False-  in  do  sign <- (char '-' *> pure (-1)) <|> pure 1+  in  do  sign <- ((-1) <$ char '-') <|> pure 1           ds <- many digit           when (lengthLT4 ds)             $ fail "need at least four digits in year"
xsd.cabal view
@@ -1,5 +1,5 @@ name:                 xsd-version:              0.6.1+version:              0.6.2 license:              BSD3 license-file:         LICENCE author:               Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>