string-conversions (empty) → 0.1
raw patch · 4 files changed
+204/−0 lines, 4 filesdep +basedep +bytestringdep +textsetup-changed
Dependencies added: base, bytestring, text, utf8-string
Files
- Data/String/Conversions.hs +141/−0
- LICENSE +30/−0
- Setup.hs +2/−0
- string-conversions.cabal +31/−0
+ Data/String/Conversions.hs view
@@ -0,0 +1,141 @@+{-# language MultiParamTypeClasses, TypeSynonymInstances, FlexibleInstances #-}++-- | A type class for converting strings.+-- Supported types are:+--+-- * 'String'+--+-- * strict 'Data.ByteString.ByteString'+--+-- * lazy 'Data.ByteString.Lazy.ByteString'+--+-- * strict 'Data.Text.Text'+--+-- * lazy 'Data.Text.Lazy.Text'+--+-- Assumes UTF-8.++module Data.String.Conversions where+++import Data.Monoid++import Control.Applicative++-- string imports++import qualified Data.ByteString+import qualified Data.ByteString.UTF8++import qualified Data.ByteString.Lazy+import qualified Data.ByteString.Lazy.UTF8++import qualified Data.Text+import qualified Data.Text.Encoding++import qualified Data.Text.Lazy+import qualified Data.Text.Lazy.Encoding+++-- * class and conversions++class ConvertibleStrings a b where+ convertString :: a -> b++cs :: ConvertibleStrings a b => a -> b+cs = convertString+++-- * type synonyms++type StrictByteString = Data.ByteString.ByteString+type SBS = Data.ByteString.ByteString++type LazyByteString = Data.ByteString.Lazy.ByteString+type LBS = Data.ByteString.Lazy.ByteString++type StrictText = Data.Text.Text+type ST = Data.Text.Text++type LazyText = Data.Text.Lazy.Text+type LT = Data.Text.Lazy.Text+++-- instances+-- ---------++-- from String++instance ConvertibleStrings String StrictByteString where+ convertString = Data.ByteString.UTF8.fromString++instance ConvertibleStrings String LazyByteString where+ convertString = Data.ByteString.Lazy.UTF8.fromString++instance ConvertibleStrings String StrictText where+ convertString = Data.Text.pack++instance ConvertibleStrings String LazyText where+ convertString = Data.Text.Lazy.pack+++-- from StrictByteString++instance ConvertibleStrings StrictByteString String where+ convertString = Data.ByteString.UTF8.toString++instance ConvertibleStrings StrictByteString LazyByteString where+ convertString = Data.ByteString.Lazy.fromChunks . pure++instance ConvertibleStrings StrictByteString StrictText where+ convertString = Data.Text.Encoding.decodeUtf8++instance ConvertibleStrings StrictByteString LazyText where+ convertString =+ Data.Text.Lazy.Encoding.decodeUtf8 . Data.ByteString.Lazy.fromChunks . pure+++-- from LazyByteString++instance ConvertibleStrings LazyByteString String where+ convertString = Data.ByteString.Lazy.UTF8.toString++instance ConvertibleStrings LazyByteString StrictByteString where+ convertString = mconcat . Data.ByteString.Lazy.toChunks++instance ConvertibleStrings LazyByteString StrictText where+ convertString = Data.Text.Encoding.decodeUtf8 . mconcat . Data.ByteString.Lazy.toChunks++instance ConvertibleStrings LazyByteString LazyText where+ convertString = Data.Text.Lazy.Encoding.decodeUtf8+++-- from StrictText++instance ConvertibleStrings StrictText String where+ convertString = Data.Text.unpack++instance ConvertibleStrings StrictText StrictByteString where+ convertString = Data.Text.Encoding.encodeUtf8++instance ConvertibleStrings StrictText LazyByteString where+ convertString = Data.ByteString.Lazy.fromChunks . pure . Data.Text.Encoding.encodeUtf8++instance ConvertibleStrings StrictText LazyText where+ convertString = Data.Text.Lazy.fromChunks . pure+++-- from LazyText++instance ConvertibleStrings LazyText String where+ convertString = Data.Text.Lazy.unpack++instance ConvertibleStrings LazyText StrictByteString where+ convertString =+ mconcat . Data.ByteString.Lazy.toChunks . Data.Text.Lazy.Encoding.encodeUtf8++instance ConvertibleStrings LazyText LazyByteString where+ convertString = Data.Text.Lazy.Encoding.encodeUtf8++instance ConvertibleStrings LazyText StrictText where+ convertString = mconcat . Data.Text.Lazy.toChunks
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2012, Sönke Hahn++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++ * Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.++ * 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.++ * Neither the name of Sönke Hahn nor the names of other+ contributors may be used to endorse or promote products derived+ from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT+OWNER 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,2 @@+import Distribution.Simple+main = defaultMain
+ string-conversions.cabal view
@@ -0,0 +1,31 @@+-- Initial string-conversions.cabal generated by cabal init. For further+-- documentation, see http://haskell.org/cabal/users-guide/++name: string-conversions+version: 0.1+synopsis: Simplifies dealing with different types for strings+description: Provides a simple type class for converting values+ of different string types+ into values of other string types.+license: BSD3+license-file: LICENSE+author: Sönke Hahn+maintainer: shahn@joyridelabs.de+-- copyright:+category: Data+build-type: Simple+cabal-version: >=1.8++source-repository head+ type: darcs+ location: http://patch-tag.com/r/shahn/string-conversions/++library+ exposed-modules: Data.String.Conversions+ build-depends:+ base < 5,+ bytestring == 0.9.*,+ text == 0.11.*,+ utf8-string == 0.3.*+ ghc-options:+ -Wall