monoid-subclasses 0.3.2 → 0.3.3
raw patch · 2 files changed
+25/−9 lines, 2 files
Files
Data/Monoid/Instances/ByteString/UTF8.hs view
@@ -9,11 +9,12 @@ -- module Data.Monoid.Instances.ByteString.UTF8 (- ByteStringUTF8(..)+ ByteStringUTF8(..), decode ) where -import Prelude hiding (drop, dropWhile, foldl, foldl1, foldr, foldr1, scanl, scanr, scanl1, scanr1, map, concatMap, break, span)+import Prelude hiding (drop, dropWhile, foldl, foldl1, foldr, foldr1, scanl, scanr, scanl1, scanr1,+ map, concatMap, break, span) import Data.Bits ((.&.), (.|.), shiftL, shiftR) import Data.Char (chr, ord)@@ -36,6 +37,20 @@ import qualified Data.Monoid.Textual as Textual (TextualMonoid(..)) newtype ByteStringUTF8 = ByteStringUTF8 ByteString deriving (Eq, Ord)++-- | Takes a raw 'ByteString' chunk and returns a pair of 'ByteStringUTF8' decoding the prefix of the chunk and the+-- remaining suffix that is either null or contains the incomplete last character of the chunk.+decode :: ByteString -> (ByteStringUTF8, ByteString)+decode bs+ | ByteString.null bs || l < 0x80 = (ByteStringUTF8 bs, mempty)+ | l >= 0xC0 = (ByteStringUTF8 (ByteString.init bs), ByteString.singleton l)+ | ByteString.null prefix = (mempty, bs)+ | otherwise =+ case toChar (ByteString.last prefix) suffix+ of Nothing -> (ByteStringUTF8 (ByteString.init prefix), drop (ByteString.length prefix - 1) bs)+ Just{} -> (ByteStringUTF8 bs, mempty)+ where (prefix, suffix) = ByteString.breakEnd byteStartsCharacter bs+ l = ByteString.last bs instance Monoid ByteStringUTF8 where mempty = ByteStringUTF8 ByteString.empty
monoid-subclasses.cabal view
@@ -1,23 +1,24 @@ Name: monoid-subclasses-Version: 0.3.2+Version: 0.3.3 Cabal-Version: >= 1.10 Build-Type: Simple Synopsis: Subclasses of Monoid-Category: Data+Category: Data, Algebra, Text Tested-with: GHC Description:- This package defines a hierarchy of subclasses of 'Monoid' together with their instances for all data- structures from base, containers, and text packages.+ A hierarchy of subclasses of 'Monoid' together with their instances for all data structures from base, containers, and+ text packages. License: BSD3 License-file: BSD3-LICENSE.txt Copyright: (c) 2013 Mario Blazevic Author: Mario Blazevic-Maintainer: blamario@yahoo.com+Maintainer: Mario Blazevic <blamario@yahoo.com> Homepage: https://github.com/blamario/monoid-subclasses/+Bug-reports: https://github.com/blamario/monoid-subclasses/issues Source-repository head- type: darcs- location: http://code.haskell.org/SCC/+ type: git+ location: https://github.com/blamario/monoid-subclasses Library Exposed-Modules: Data.Monoid.Cancellative, Data.Monoid.Factorial, Data.Monoid.Null, Data.Monoid.Textual,