diff --git a/Data/Text/Buildable.hs b/Data/Text/Buildable.hs index 4888eb4..549a118 100644 --- a/Data/Text/Buildable.hs +++ b/Data/Text/Buildable.hs @@ -1,4 +1,6 @@ -{-# LANGUAGE CPP, FlexibleInstances, OverloadedStrings #-} +{-# LANGUAGE CPP #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE OverloadedStrings #-} -- | -- Module : Data.Text.Buildable @@ -17,26 +19,31 @@ module Data.Text.Buildable ) where #if MIN_VERSION_base(4,8,0) -import Data.Void (Void, absurd) +import Data.Void (Void, absurd) #endif -import Data.Monoid (mempty) -import Data.Int (Int8, Int16, Int32, Int64) -import Data.Fixed (Fixed, HasResolution, showFixed) -import Data.Ratio (Ratio, denominator, numerator) -import Data.Text.Format.Functions ((<>)) -import Data.Text.Format.Int (decimal, hexadecimal) -import Data.Text.Format.Types (Hex(..), Shown(..)) -import Data.Text.Lazy.Builder -import Data.Time.Calendar (Day, showGregorian) -import Data.Time.Clock (DiffTime, NominalDiffTime, UTCTime, UniversalTime) -import Data.Time.Clock (getModJulianDate) -import Data.Time.LocalTime (LocalTime, TimeOfDay, TimeZone, ZonedTime) -import Data.Word (Word, Word8, Word16, Word32, Word64) -import Foreign.Ptr (IntPtr, WordPtr, Ptr, ptrToWordPtr) import qualified Data.Double.Conversion.Text as C -import qualified Data.Text as ST -import qualified Data.Text.Lazy as LT +import Data.Fixed (Fixed, HasResolution, showFixed) +import Data.Int (Int16, Int32, Int64, Int8) +import Data.Monoid (mempty) +import Data.Ratio (Ratio, denominator, numerator) +import qualified Data.Text as ST +import Data.Text.Format.Functions ((<>)) +import Data.Text.Format.Int (decimal, hexadecimal) +import Data.Text.Format.Types (Hex (..), Shown (..)) +import qualified Data.Text.Lazy as LT +import Data.Text.Lazy.Builder +import Data.Time.Calendar (Day, showGregorian) +import Data.Time.Clock (DiffTime, NominalDiffTime, + UTCTime, UniversalTime) +import Data.Time.Clock (getModJulianDate) +import Data.Time.LocalTime (LocalTime, TimeOfDay, TimeZone, + ZonedTime) +import Data.Word (Word, Word16, Word32, Word64, + Word8) +import Foreign.Ptr (IntPtr, Ptr, WordPtr, + ptrToWordPtr) +import Prelude hiding ((<>)) -- | The class of types that can be rendered to a 'Builder'. class Buildable p where @@ -155,7 +162,7 @@ instance (Show a) => Buildable (Shown a) where {-# INLINE build #-} instance (Buildable a) => Buildable (Maybe a) where - build Nothing = mempty + build Nothing = mempty build (Just v) = build v {-# INLINE build #-} @@ -185,5 +192,5 @@ instance Buildable (Ptr a) where build = build . ptrToWordPtr instance Buildable Bool where - build True = fromText "True" + build True = fromText "True" build False = fromText "False" diff --git a/Data/Text/Format.hs b/Data/Text/Format.hs index 7a7f725..07a4b36 100644 --- a/Data/Text/Format.hs +++ b/Data/Text/Format.hs @@ -1,4 +1,5 @@ -{-# LANGUAGE OverloadedStrings, RelaxedPolyRec #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE RelaxedPolyRec #-} -- | -- Module : Data.Text.Format @@ -35,19 +36,20 @@ module Data.Text.Format , shortest ) where -import Control.Monad.IO.Class (MonadIO(liftIO)) -import Data.Text.Format.Functions ((<>)) -import Data.Text.Format.Params (Params(..)) -import Data.Text.Format.Types.Internal (Format(..), Only(..), Shown(..)) -import Data.Text.Format.Types.Internal (Hex(..)) -import Data.Text.Lazy.Builder -import Prelude hiding (exp, print) -import System.IO (Handle) -import qualified Data.Double.Conversion.Text as C -import qualified Data.Text as ST -import qualified Data.Text.Buildable as B -import qualified Data.Text.Lazy as LT -import qualified Data.Text.Lazy.IO as LT +import Control.Monad.IO.Class (MonadIO (liftIO)) +import qualified Data.Double.Conversion.Text as C +import qualified Data.Text as ST +import qualified Data.Text.Buildable as B +import Data.Text.Format.Functions ((<>)) +import Data.Text.Format.Params (Params (..)) +import Data.Text.Format.Types.Internal (Format (..), Only (..), + Shown (..)) +import Data.Text.Format.Types.Internal (Hex (..)) +import qualified Data.Text.Lazy as LT +import Data.Text.Lazy.Builder +import qualified Data.Text.Lazy.IO as LT +import Prelude hiding (exp, print, (<>)) +import System.IO (Handle) -- Format strings are almost always constants, and they're expensive -- to interpret (which we refer to as "cracking" here). We'd really diff --git a/Data/Text/Format/Functions.hs b/Data/Text/Format/Functions.hs index f10dd77..3068e34 100644 --- a/Data/Text/Format/Functions.hs +++ b/Data/Text/Format/Functions.hs @@ -17,9 +17,10 @@ module Data.Text.Format.Functions , i2d ) where -import Data.Monoid (mappend) -import Data.Text.Lazy.Builder (Builder) -import GHC.Base +import Data.Monoid (mappend) +import Data.Text.Lazy.Builder (Builder) +import GHC.Base hiding ((<>)) +import Prelude hiding ((<>)) -- | Unsafe conversion for decimal digits. {-# INLINE i2d #-} diff --git a/Data/Text/Format/Int.hs b/Data/Text/Format/Int.hs index 37858c9..80d8a29 100644 --- a/Data/Text/Format/Int.hs +++ b/Data/Text/Format/Int.hs @@ -1,4 +1,7 @@ -{-# LANGUAGE BangPatterns, CPP, MagicHash, UnboxedTuples #-} +{-# LANGUAGE BangPatterns #-} +{-# LANGUAGE CPP #-} +{-# LANGUAGE MagicHash #-} +{-# LANGUAGE UnboxedTuples #-} -- Module: Data.Text.Format.Int -- Copyright: (c) 2011 MailRank, Inc. @@ -16,20 +19,22 @@ module Data.Text.Format.Int , minus ) where -import Data.Int (Int8, Int16, Int32, Int64) -import Data.Monoid (mempty) -import Data.Text.Format.Functions ((<>), i2d) -import Data.Text.Lazy.Builder -import Data.Word (Word, Word8, Word16, Word32, Word64) -import GHC.Base (quotInt, remInt) -import GHC.Num (quotRemInteger) -import GHC.Types (Int(..)) +import Data.Int (Int16, Int32, Int64, Int8) +import Data.Monoid (mempty) +import Data.Text.Format.Functions (i2d, (<>)) +import Data.Text.Lazy.Builder +import Data.Word (Word, Word16, Word32, Word64, + Word8) +import GHC.Base (quotInt, remInt) +import GHC.Num (quotRemInteger) +import GHC.Types (Int (..)) +import Prelude hiding ((<>)) #ifdef __GLASGOW_HASKELL__ # if __GLASGOW_HASKELL__ < 611 -import GHC.Integer.Internals +import GHC.Integer.Internals # else -import GHC.Integer.GMP.Internals +import GHC.Integer.GMP.Internals # endif #endif diff --git a/Data/Text/Format/Params.hs b/Data/Text/Format/Params.hs index 1e5756d..85c45dd 100644 --- a/Data/Text/Format/Params.hs +++ b/Data/Text/Format/Params.hs @@ -14,9 +14,9 @@ module Data.Text.Format.Params Params(..) ) where -import Data.Text.Buildable -import Data.Text.Format.Types -import Data.Text.Lazy.Builder +import Data.Text.Buildable +import Data.Text.Format.Types +import Data.Text.Lazy.Builder -- | The class of types that can be used as a collection of arguments -- for formatting. diff --git a/Data/Text/Format/Types.hs b/Data/Text/Format/Types.hs index 8972606..b4a9446 100644 --- a/Data/Text/Format/Types.hs +++ b/Data/Text/Format/Types.hs @@ -1,4 +1,5 @@ -{-# LANGUAGE DeriveDataTypeable, GeneralizedNewtypeDeriving #-} +{-# LANGUAGE DeriveDataTypeable #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} -- | -- Module : Data.Text.Format.Types @@ -20,4 +21,4 @@ module Data.Text.Format.Types , Hex(..) ) where -import Data.Text.Format.Types.Internal +import Data.Text.Format.Types.Internal diff --git a/Data/Text/Format/Types/Internal.hs b/Data/Text/Format/Types/Internal.hs index 2eaccb2..58e6fc5 100644 --- a/Data/Text/Format/Types/Internal.hs +++ b/Data/Text/Format/Types/Internal.hs @@ -1,4 +1,5 @@ -{-# LANGUAGE DeriveDataTypeable, GeneralizedNewtypeDeriving #-} +{-# LANGUAGE DeriveDataTypeable #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} -- | -- Module : Data.Text.Format.Types.Internal @@ -20,10 +21,11 @@ module Data.Text.Format.Types.Internal , Hex(..) ) where -import Data.Monoid (Monoid(..)) -import Data.String (IsString(..)) -import Data.Text (Text) -import Data.Typeable (Typeable) +import Data.Monoid (Monoid (..)) +import Data.Semigroup (Semigroup (..)) +import Data.String (IsString (..)) +import Data.Text (Text) +import Data.Typeable (Typeable) -- | A format string. This is intentionally incompatible with other -- string types, to make it difficult to construct a format string by @@ -46,8 +48,10 @@ import Data.Typeable (Typeable) newtype Format = Format { fromFormat :: Text } deriving (Eq, Ord, Typeable, Show) +instance Semigroup Format where + Format a <> Format b = Format (a <> b) + instance Monoid Format where - Format a `mappend` Format b = Format (a `mappend` b) mempty = Format mempty instance IsString Format where diff --git a/stack.yaml b/stack.yaml index 3a4ea0b..5eefadc 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,7 +1,9 @@ +resolver: lts-12.0 + flags: text-format: developer: false packages: - '.' extra-deps: [] -resolver: lts-3.0 +