text-builder-dev 0.3.8 → 0.3.9
raw patch · 3 files changed
+134/−25 lines, 3 filesdep +lawful-conversions
Dependencies added: lawful-conversions
Files
- library/TextBuilderDev.hs +122/−23
- test/Main.hs +9/−1
- text-builder-dev.cabal +3/−1
library/TextBuilderDev.hs view
@@ -88,6 +88,7 @@ import qualified Data.Text.Lazy as TextLazy import qualified Data.Text.Lazy.Builder as TextLazyBuilder import qualified DeferredFolds.Unfoldr as Unfoldr+import qualified LawfulConversions import qualified Test.QuickCheck.Gen as QcGen import qualified TextBuilderDev.Allocator as Allocator import TextBuilderDev.Prelude hiding (intercalate, length, null)@@ -130,28 +131,6 @@ toTextBuilder = id fromTextBuilder = id -instance IsomorphicToTextBuilder Text where- toTextBuilder = text- fromTextBuilder = buildText--instance IsomorphicToTextBuilder String where- toTextBuilder = fromString- fromTextBuilder = Text.unpack . buildText--instance IsomorphicToTextBuilder TextLazy.Text where- toTextBuilder = lazyText- fromTextBuilder = TextLazy.fromStrict . buildText--instance IsomorphicToTextBuilder TextLazyBuilder.Builder where- toTextBuilder = text . TextLazy.toStrict . TextLazyBuilder.toLazyText- fromTextBuilder = TextLazyBuilder.fromText . buildText--#if MIN_VERSION_text(2,0,2)-instance IsomorphicToTextBuilder TextEncoding.StrictBuilder where- toTextBuilder = toTextBuilder . TextEncoding.strictBuilderToText- fromTextBuilder = TextEncoding.textToStrictBuilder . fromTextBuilder-#endif- -- * -- -- |@@ -218,33 +197,153 @@ intervalInSeconds @Double <$> arbitrary ] +-- ** Strict Text++instance IsomorphicToTextBuilder Text where+ toTextBuilder = text+ fromTextBuilder = buildText+ instance IsomorphicTo TextBuilder Text where to = TextBuilderDev.text instance IsomorphicTo Text TextBuilder where to = TextBuilderDev.buildText +instance LawfulConversions.IsSome TextBuilder Text where+ to = TextBuilderDev.text++instance LawfulConversions.IsSome Text TextBuilder where+ to = TextBuilderDev.buildText++instance LawfulConversions.IsMany TextBuilder Text++instance LawfulConversions.IsMany Text TextBuilder++instance LawfulConversions.Is TextBuilder Text++instance LawfulConversions.Is Text TextBuilder++-- ** String++instance IsomorphicToTextBuilder String where+ toTextBuilder = fromString+ fromTextBuilder = Text.unpack . buildText++instance LawfulConversions.IsSome String TextBuilder where+ to = Text.unpack . buildText+ maybeFrom = fmap text . LawfulConversions.maybeFrom++instance LawfulConversions.IsMany String TextBuilder where+ from = text . LawfulConversions.from++-- ** Lazy Text++instance IsomorphicToTextBuilder TextLazy.Text where+ toTextBuilder = lazyText+ fromTextBuilder = TextLazy.fromStrict . buildText+ instance IsomorphicTo TextBuilder TextLazy.Text where to = TextBuilderDev.lazyText instance IsomorphicTo TextLazy.Text TextBuilder where to = to . to @Text +instance LawfulConversions.IsSome TextBuilder TextLazy.Text where+ to = lazyText++instance LawfulConversions.IsSome TextLazy.Text TextBuilder where+ to = TextLazy.fromStrict . buildText++instance LawfulConversions.IsMany TextBuilder TextLazy.Text++instance LawfulConversions.IsMany TextLazy.Text TextBuilder++instance LawfulConversions.Is TextBuilder TextLazy.Text++instance LawfulConversions.Is TextLazy.Text TextBuilder++-- ** Lazy Text Builder++instance IsomorphicToTextBuilder TextLazyBuilder.Builder where+ toTextBuilder = text . TextLazy.toStrict . TextLazyBuilder.toLazyText+ fromTextBuilder = TextLazyBuilder.fromText . buildText+ instance IsomorphicTo TextBuilder TextLazyBuilder.Builder where to = to . to @TextLazy.Text instance IsomorphicTo TextLazyBuilder.Builder TextBuilder where to = to . to @Text -#if MIN_VERSION_text(2,0,2)+instance LawfulConversions.IsSome TextBuilder TextLazyBuilder.Builder where+ to = text . TextLazy.toStrict . TextLazyBuilder.toLazyText +instance LawfulConversions.IsSome TextLazyBuilder.Builder TextBuilder where+ to = TextLazyBuilder.fromText . buildText++instance LawfulConversions.IsMany TextBuilder TextLazyBuilder.Builder++instance LawfulConversions.IsMany TextLazyBuilder.Builder TextBuilder++instance LawfulConversions.Is TextBuilder TextLazyBuilder.Builder++instance LawfulConversions.Is TextLazyBuilder.Builder TextBuilder++-- ** Strict Text Builder++#if MIN_VERSION_text(2,1,2)++instance IsomorphicToTextBuilder TextEncoding.StrictTextBuilder where+ toTextBuilder = toTextBuilder . TextEncoding.strictBuilderToText+ fromTextBuilder = TextEncoding.textToStrictBuilder . fromTextBuilder++instance IsomorphicTo TextBuilder TextEncoding.StrictTextBuilder where+ to = to . TextEncoding.strictBuilderToText++instance IsomorphicTo TextEncoding.StrictTextBuilder TextBuilder where+ to = TextEncoding.textToStrictBuilder . to++instance LawfulConversions.IsSome TextBuilder TextEncoding.StrictTextBuilder where+ to = toTextBuilder . TextEncoding.strictBuilderToText++instance LawfulConversions.IsSome TextEncoding.StrictTextBuilder TextBuilder where+ to = TextEncoding.textToStrictBuilder . fromTextBuilder++instance LawfulConversions.IsMany TextBuilder TextEncoding.StrictTextBuilder++instance LawfulConversions.IsMany TextEncoding.StrictTextBuilder TextBuilder++instance LawfulConversions.Is TextBuilder TextEncoding.StrictTextBuilder++instance LawfulConversions.Is TextEncoding.StrictTextBuilder TextBuilder++#elif MIN_VERSION_text(2,0,2)++instance IsomorphicToTextBuilder TextEncoding.StrictBuilder where+ toTextBuilder = toTextBuilder . TextEncoding.strictBuilderToText+ fromTextBuilder = TextEncoding.textToStrictBuilder . fromTextBuilder+ instance IsomorphicTo TextBuilder TextEncoding.StrictBuilder where to = to . TextEncoding.strictBuilderToText instance IsomorphicTo TextEncoding.StrictBuilder TextBuilder where to = TextEncoding.textToStrictBuilder . to +instance LawfulConversions.IsSome TextBuilder TextEncoding.StrictBuilder where+ to = toTextBuilder . TextEncoding.strictBuilderToText++instance LawfulConversions.IsSome TextEncoding.StrictBuilder TextBuilder where+ to = TextEncoding.textToStrictBuilder . fromTextBuilder++instance LawfulConversions.IsMany TextBuilder TextEncoding.StrictBuilder++instance LawfulConversions.IsMany TextEncoding.StrictBuilder TextBuilder++instance LawfulConversions.Is TextBuilder TextEncoding.StrictBuilder++instance LawfulConversions.Is TextEncoding.StrictBuilder TextBuilder+ #endif+ -- * Accessors -- | Get the amount of characters.
test/Main.hs view
@@ -5,12 +5,14 @@ import qualified Data.Text as Text import qualified Data.Text.Lazy as TextLazy import qualified Data.Text.Lazy.Builder as TextLazyBuilder+import qualified LawfulConversions import Numeric.Compat import Test.QuickCheck.Classes import Test.QuickCheck.Instances () import Test.Tasty import Test.Tasty.HUnit import Test.Tasty.QuickCheck hiding ((.&.))+import TextBuilderDev (TextBuilder) import qualified TextBuilderDev as B import qualified TextBuilderDev.TastyExtras as Extras import Prelude hiding (choose, showBin)@@ -194,7 +196,13 @@ testLaws $ showLaws (Proxy @B.TextBuilder), testLaws $ eqLaws (Proxy @B.TextBuilder), testLaws $ semigroupLaws (Proxy @B.TextBuilder),- testLaws $ monoidLaws (Proxy @B.TextBuilder)+ testLaws $ monoidLaws (Proxy @B.TextBuilder),+ testGroup "LawfulConversions integration"+ $ [ testProperties "Is Text" $ LawfulConversions.isProperties @Text @TextBuilder Proxy Proxy,+ testProperties "Is Lazy Text" $ LawfulConversions.isProperties @TextLazy.Text @TextBuilder Proxy Proxy,+ testProperties "Is Lazy Text Builder" $ LawfulConversions.isProperties @TextLazyBuilder.Builder @TextBuilder Proxy Proxy,+ testProperties "IsMany String" $ LawfulConversions.isManyProperties @String @TextBuilder Proxy Proxy+ ] ] where bigTest = 10000
text-builder-dev.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: text-builder-dev-version: 0.3.8+version: 0.3.9 category: Text, Builders synopsis: Edge of developments for "text-builder" description:@@ -82,6 +82,7 @@ bytestring >=0.10 && <0.13, deferred-folds >=0.9.10.1 && <0.10, isomorphism-class >=0.3 && <0.4,+ lawful-conversions >=0.1.4 && <0.2, quickcheck-instances >=0.3.28 && <0.4, split >=0.2.3.4 && <0.3, text >=1.0 && <3,@@ -96,6 +97,7 @@ other-modules: TextBuilderDev.TastyExtras build-depends: base-compat >=0.13,+ lawful-conversions >=0.1.4 && <0.2, quickcheck-classes >=0.6.5 && <0.7, quickcheck-instances >=0.3.28 && <0.4, rerebase <2,