stringz (empty) → 0.0.1
raw patch · 8 files changed
+459/−0 lines, 8 filesdep +basedep +bytestringdep +lenssetup-changed
Dependencies added: base, bytestring, lens, text
Files
- LICENCE +27/−0
- Setup.hs +3/−0
- changelog.md +3/−0
- src/Data/Stringz.hs +9/−0
- src/Data/Stringz/ByteString.hs +146/−0
- src/Data/Stringz/String.hs +81/−0
- src/Data/Stringz/Text.hs +154/−0
- stringz.cabal +36/−0
+ LICENCE view
@@ -0,0 +1,27 @@+Copyright 2024 Tony Morris++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions+are met:+1. Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.+2. Redistributions in binary form must reproduce the above copyright+ notice, this list of conditions and the following disclaimer in the+ documentation and/or other materials provided with the distribution.+3. Neither the name of the author nor the names of his contributors+ may be used to endorse or promote products derived from this software+ without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF+SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,3 @@+import Distribution.Simple+main = defaultMain+
+ changelog.md view
@@ -0,0 +1,3 @@+0.0.1++* This change log starts
+ src/Data/Stringz.hs view
@@ -0,0 +1,9 @@+{-# OPTIONS_GHC -Wall #-}++module Data.Stringz(+ module S+) where++import Data.Stringz.ByteString as S+import Data.Stringz.String as S+import Data.Stringz.Text as S
+ src/Data/Stringz/ByteString.hs view
@@ -0,0 +1,146 @@+{-# OPTIONS_GHC -Wall #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Stringz.ByteString where++import Control.Lens+import qualified Data.ByteString.Char8 as ByteStringChar8+import qualified Data.ByteString.Lazy.Char8 as ByteStringLazyChar8+import qualified Data.Text as Text+import qualified Data.Text.Lazy as LazyText++class HasByteString a where+ byteString ::+ Lens' a ByteStringChar8.ByteString++instance HasByteString [Char] where+ byteString =+ iso+ ByteStringChar8.pack+ ByteStringChar8.unpack++instance HasByteString Text.Text where+ byteString =+ iso Text.unpack Text.pack . iso ByteStringChar8.pack ByteStringChar8.unpack++instance HasByteString LazyText.Text where+ byteString =+ iso LazyText.unpack LazyText.pack . iso ByteStringChar8.pack ByteStringChar8.unpack++instance HasByteString ByteStringChar8.ByteString where+ byteString =+ id++instance HasByteString ByteStringLazyChar8.ByteString where+ byteString =+ iso ByteStringLazyChar8.toStrict ByteStringLazyChar8.fromStrict++instance HasByteString a => HasByteString (Identity a) where+ byteString =+ iso runIdentity Identity . byteString++instance HasByteString a => HasByteString (Const a b) where+ byteString =+ iso getConst Const . byteString++class HasLazyByteString a where+ lazyByteString ::+ Lens' a ByteStringLazyChar8.ByteString++instance HasLazyByteString [Char] where+ lazyByteString =+ iso+ ByteStringLazyChar8.pack+ ByteStringLazyChar8.unpack++instance HasLazyByteString Text.Text where+ lazyByteString =+ iso Text.unpack Text.pack . iso ByteStringLazyChar8.pack ByteStringLazyChar8.unpack++instance HasLazyByteString LazyText.Text where+ lazyByteString =+ iso LazyText.unpack LazyText.pack . iso ByteStringLazyChar8.pack ByteStringLazyChar8.unpack++instance HasLazyByteString ByteStringChar8.ByteString where+ lazyByteString =+ iso ByteStringChar8.fromStrict ByteStringChar8.toStrict++instance HasLazyByteString ByteStringLazyChar8.ByteString where+ lazyByteString =+ id++instance HasLazyByteString a => HasLazyByteString (Identity a) where+ lazyByteString =+ iso runIdentity Identity . lazyByteString++instance HasLazyByteString a => HasLazyByteString (Const a b) where+ lazyByteString =+ iso getConst Const . lazyByteString++class AsByteString a where+ _ByteString ::+ Prism' a ByteStringChar8.ByteString++instance AsByteString [Char] where+ _ByteString =+ iso+ ByteStringChar8.pack+ ByteStringChar8.unpack++instance AsByteString Text.Text where+ _ByteString =+ iso Text.unpack Text.pack . _ByteString++instance AsByteString LazyText.Text where+ _ByteString =+ iso LazyText.unpack LazyText.pack . _ByteString++instance AsByteString ByteStringChar8.ByteString where+ _ByteString =+ id++instance AsByteString ByteStringLazyChar8.ByteString where+ _ByteString =+ iso ByteStringLazyChar8.toStrict ByteStringLazyChar8.fromStrict++instance AsByteString a => AsByteString (Identity a) where+ _ByteString =+ iso runIdentity Identity . _ByteString++instance AsByteString a => AsByteString (Const a b) where+ _ByteString =+ iso getConst Const . _ByteString++class AsLazyByteString a where+ _LazyByteString ::+ Prism' a ByteStringLazyChar8.ByteString++instance AsLazyByteString [Char] where+ _LazyByteString =+ iso+ ByteStringLazyChar8.pack+ ByteStringLazyChar8.unpack++instance AsLazyByteString Text.Text where+ _LazyByteString =+ iso Text.unpack Text.pack . _LazyByteString++instance AsLazyByteString LazyText.Text where+ _LazyByteString =+ iso LazyText.unpack LazyText.pack . _LazyByteString++instance AsLazyByteString ByteStringChar8.ByteString where+ _LazyByteString =+ iso ByteStringLazyChar8.fromStrict ByteStringLazyChar8.toStrict++instance AsLazyByteString ByteStringLazyChar8.ByteString where+ _LazyByteString =+ id++instance AsLazyByteString a => AsLazyByteString (Identity a) where+ _LazyByteString =+ iso runIdentity Identity . _LazyByteString++instance AsLazyByteString a => AsLazyByteString (Const a b) where+ _LazyByteString =+ iso getConst Const . _LazyByteString
+ src/Data/Stringz/String.hs view
@@ -0,0 +1,81 @@+{-# OPTIONS_GHC -Wall #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Stringz.String where++import Control.Lens+import qualified Data.ByteString.Char8 as ByteStringChar8+import qualified Data.ByteString.Lazy.Char8 as ByteStringLazyChar8+import qualified Data.Text as Text+import qualified Data.Text.Lazy as LazyText++class HasString a where+ string ::+ Lens' a String++instance HasString [Char] where+ string =+ id+instance HasString Text.Text where+ string =+ iso+ Text.unpack+ Text.pack++instance HasString LazyText.Text where+ string =+ iso+ LazyText.unpack+ LazyText.pack++instance HasString ByteStringChar8.ByteString where+ string =+ iso ByteStringChar8.unpack ByteStringChar8.pack . string++instance HasString ByteStringLazyChar8.ByteString where+ string =+ iso ByteStringLazyChar8.unpack ByteStringLazyChar8.pack . string++instance HasString a => HasString (Identity a) where+ string =+ iso runIdentity Identity . string++instance HasString a => HasString (Const a b) where+ string =+ iso getConst Const . string++class AsString a where+ _String ::+ Prism' a String++instance AsString [Char] where+ _String =+ id++instance AsString Text.Text where+ _String =+ iso+ Text.unpack+ Text.pack++instance AsString LazyText.Text where+ _String =+ iso+ LazyText.unpack+ LazyText.pack++instance AsString ByteStringChar8.ByteString where+ _String =+ iso ByteStringChar8.unpack ByteStringChar8.pack . _String++instance AsString ByteStringLazyChar8.ByteString where+ _String =+ iso ByteStringLazyChar8.unpack ByteStringLazyChar8.pack . _String++instance AsString a => AsString (Identity a) where+ _String =+ iso runIdentity Identity . _String++instance AsString a => AsString (Const a b) where+ _String =+ iso getConst Const . _String
+ src/Data/Stringz/Text.hs view
@@ -0,0 +1,154 @@+{-# OPTIONS_GHC -Wall #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Stringz.Text where++import Control.Lens+import qualified Data.ByteString.Char8 as ByteStringChar8+import qualified Data.ByteString.Lazy.Char8 as ByteStringLazyChar8+import qualified Data.Text as Text+import qualified Data.Text.Lazy as LazyText++class HasText a where+ text ::+ Lens' a Text.Text++instance HasText [Char] where+ text =+ iso+ Text.pack+ Text.unpack++instance HasText Text.Text where+ text =+ id++instance HasText LazyText.Text where+ text =+ iso+ LazyText.toStrict+ LazyText.fromStrict++instance HasText ByteStringChar8.ByteString where+ text =+ iso ByteStringChar8.unpack ByteStringChar8.pack . text++instance HasText ByteStringLazyChar8.ByteString where+ text =+ iso ByteStringLazyChar8.unpack ByteStringLazyChar8.pack . text++instance HasText a => HasText (Identity a) where+ text =+ iso runIdentity Identity . text++instance HasText a => HasText (Const a b) where+ text =+ iso getConst Const . text++class HasLazyText a where+ lazyText ::+ Lens' a LazyText.Text++instance HasLazyText [Char] where+ lazyText =+ iso+ LazyText.pack+ LazyText.unpack++instance HasLazyText Text.Text where+ lazyText =+ iso+ LazyText.fromStrict+ LazyText.toStrict++instance HasLazyText LazyText.Text where+ lazyText =+ id++instance HasLazyText ByteStringChar8.ByteString where+ lazyText =+ iso ByteStringChar8.unpack ByteStringChar8.pack . lazyText++instance HasLazyText ByteStringLazyChar8.ByteString where+ lazyText =+ iso ByteStringLazyChar8.unpack ByteStringLazyChar8.pack . lazyText++instance HasLazyText a => HasLazyText (Identity a) where+ lazyText =+ iso runIdentity Identity . lazyText++instance HasLazyText a => HasLazyText (Const a b) where+ lazyText =+ iso getConst Const . lazyText++class AsText a where+ _Text ::+ Prism' a Text.Text++instance AsText [Char] where+ _Text =+ iso+ Text.pack+ Text.unpack++instance AsText Text.Text where+ _Text =+ id++instance AsText LazyText.Text where+ _Text =+ iso+ LazyText.toStrict+ LazyText.fromStrict++instance AsText ByteStringChar8.ByteString where+ _Text =+ iso ByteStringChar8.unpack ByteStringChar8.pack . _Text++instance AsText ByteStringLazyChar8.ByteString where+ _Text =+ iso ByteStringLazyChar8.unpack ByteStringLazyChar8.pack . _Text++instance AsText a => AsText (Identity a) where+ _Text =+ iso runIdentity Identity . _Text++instance AsText a => AsText (Const a b) where+ _Text =+ iso getConst Const . _Text++class AsLazyText a where+ _LazyText ::+ Prism' a LazyText.Text++instance AsLazyText [Char] where+ _LazyText =+ iso+ LazyText.pack+ LazyText.unpack++instance AsLazyText Text.Text where+ _LazyText =+ iso+ LazyText.fromStrict+ LazyText.toStrict++instance AsLazyText LazyText.Text where+ _LazyText =+ id++instance AsLazyText ByteStringChar8.ByteString where+ _LazyText =+ iso ByteStringChar8.unpack ByteStringChar8.pack . _LazyText++instance AsLazyText ByteStringLazyChar8.ByteString where+ _LazyText =+ iso ByteStringLazyChar8.unpack ByteStringLazyChar8.pack . _LazyText++instance AsLazyText a => AsLazyText (Identity a) where+ _LazyText =+ iso runIdentity Identity . _LazyText++instance AsLazyText a => AsLazyText (Const a b) where+ _LazyText =+ iso getConst Const . _LazyText
+ stringz.cabal view
@@ -0,0 +1,36 @@+name: stringz+version: 0.0.1+synopsis: Optics for string-like data types+description: Optics for string-like data types e.g. [Char], Text, ByteString+license: BSD3+license-file: LICENCE+author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>+maintainer: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>+copyright: Copyright (C) 2024 Tony Morris+category: Data+build-type: Simple+extra-source-files: changelog.md+cabal-version: >=1.10+homepage: https://gitlab.com/tonymorris/stringz+bug-reports: https://gitlab.com/tonymorris/stringz/issues+tested-with: GHC == 9.6.5++source-repository head+ type: git+ location: git@gitlab.com:tonymorris/stringz.git++library+ exposed-modules:+ Data.Stringz+ Data.Stringz.ByteString+ Data.Stringz.String+ Data.Stringz.Text++ build-depends: base >= 4.9 && < 6+ , lens >= 5 && < 6+ , text >= 2 && < 3+ , bytestring >= 0.9 && < 1++ hs-source-dirs: src+ default-language: Haskell2010+ ghc-options: -Wall