make quasiquoter (and haskell-src-exts dependency) optional

This commit is contained in:
rhiannon morris 2024-10-23 01:53:23 +02:00
parent eaf07f8981
commit 9269caacb7
2 changed files with 30 additions and 9 deletions

View file

@ -34,6 +34,11 @@ common build-settings
default-language: Haskell2010
ghc-options: -Wall -Wunused-packages
flag quoter
manual: True
description: Include the quasiquoter
default: True
flag checked
manual: True
description: Add bounds-checking to primitive array operations
@ -48,7 +53,6 @@ library
Data.Bytes.Builder.Bounded.Class
Data.Bytes.Builder.Bounded.Unsafe
Data.Bytes.Builder.Class
Data.Bytes.Builder.Template
Data.Bytes.Builder.Unsafe
other-modules:
@ -60,17 +64,21 @@ library
, base >=4.17.0.0 && <4.21
, byteslice >=0.2.6 && <0.3
, bytestring >=0.10.8.2 && <0.13
, haskell-src-meta >=0.8.13
, integer-logarithms >=1.0.3 && <1.1
, natural-arithmetic >=0.1 && <0.3
, primitive-offset >=0.2 && <0.3
, run-st >=0.1.2 && <0.2
, template-haskell >=2.16
, text >=2.0 && <2.2
, text-short >=0.1.3 && <0.2
, wide-word >=0.1.0.9 && <0.2
, zigzag
if flag(quoter)
build-depends:
haskell-src-meta >=0.8.13
, template-haskell >=2.16
exposed-modules: Data.Bytes.Builder.Template
if impl(ghc >=9.2)
hs-source-dirs: src-9.2
@ -112,9 +120,14 @@ test-suite test
, tasty-hunit >=0.10.0.2 && <0.11
, tasty-quickcheck >=0.10.1 && <0.11
, text >=2.0 && <2.2
, text-short
, wide-word >=0.1.0.9 && <0.2
default-extensions: CPP
if flag(quoter)
cpp-options: -DQUOTER
build-depends: text-short
benchmark bench
import: build-settings
type: exitcode-stdio-1.0

View file

@ -12,13 +12,10 @@ import Prelude hiding (replicate)
import Control.Applicative (liftA2)
import Control.Monad.ST (runST)
import Data.Bytes.Builder
import Data.Bytes.Builder.Template (bldr)
import Data.Bytes.Types (MutableBytes (MutableBytes))
import Data.Char (chr, ord)
import Data.IORef (IORef, newIORef, readIORef, writeIORef)
import Data.Maybe (fromMaybe)
import Data.Primitive (ByteArray, PrimArray)
import Data.Text.Short (ShortText)
import Data.WideWord (Word128 (Word128), Word256 (Word256))
import Data.Word
import Numeric.Natural (Natural)
@ -28,16 +25,20 @@ import Test.Tasty (TestTree, defaultMain, testGroup)
import Test.Tasty.HUnit ((@=?))
import Text.Printf (printf)
#ifdef QUOTER
import Data.Bytes.Builder.Template (bldr)
import Data.Maybe (fromMaybe)
import Data.Text.Short (ShortText)
#endif
import qualified Arithmetic.Nat as Nat
import qualified Data.Bits as Bits
import qualified Data.ByteString as ByteString
import qualified Data.ByteString.Builder as BB
import qualified Data.ByteString.Lazy.Char8 as LB
import qualified Data.Bytes as Bytes
import qualified Data.Bytes.Builder as Builder
import qualified Data.Bytes.Builder.Bounded as Bounded
import qualified Data.Bytes.Chunks as Chunks
import qualified Data.Bytes.Text.Ascii as Ascii
import qualified Data.Bytes.Text.Latin1 as Latin1
import qualified Data.List as L
import qualified Data.Primitive as PM
@ -48,6 +49,11 @@ import qualified Test.Tasty.HUnit as THU
import qualified Test.Tasty.QuickCheck as TQC
import qualified Prelude
#ifdef QUOTER
import qualified Data.Bytes.Builder as Builder
import qualified Data.Bytes.Text.Ascii as Ascii
#endif
import qualified HexWord64
import qualified Word16Tree
@ -329,6 +335,7 @@ tests =
]
@=? map Exts.toList (Exts.toList res)
]
#ifdef QUOTER
, testGroup
"bytes templates"
[ THU.testCase "A" $ do
@ -352,6 +359,7 @@ tests =
msg = Chunks.concat . Builder.run 200 $ msgBuilder
in Ascii.fromString "there are 137 lights!" @=? msg
]
#endif
]
bytesOntoRef ::