diff --git a/Text/RE/ZeInternals/SearchReplace/PCRE/Text.hs b/Text/RE/ZeInternals/SearchReplace/PCRE/Text.hs index f1a6213..6504b29 100644 --- a/Text/RE/ZeInternals/SearchReplace/PCRE/Text.hs +++ b/Text/RE/ZeInternals/SearchReplace/PCRE/Text.hs @@ -24,8 +24,8 @@ import Language.Haskell.TH import Language.Haskell.TH.Quote import Text.RE.REOptions import Text.RE.Tools.IsRegex -import Text.RE.ZeInternals.SearchReplace.TDFAEdPrime -import Text.RE.ZeInternals.TDFA +import Text.RE.ZeInternals.PCRE +import Text.RE.ZeInternals.SearchReplace.PCREEdPrime -- | @[ed| ... \/\/\/ ... |]@, is equivalent to @[edMultilineSensitive| ... \/\/\/ ... |]@, -- compiling a case-sensitive, multi-line 'SearchReplace' diff --git a/Text/RE/ZeInternals/SearchReplace/PCRE/Text/Lazy.hs b/Text/RE/ZeInternals/SearchReplace/PCRE/Text/Lazy.hs index 0b69eb9..4d2c4a9 100644 --- a/Text/RE/ZeInternals/SearchReplace/PCRE/Text/Lazy.hs +++ b/Text/RE/ZeInternals/SearchReplace/PCRE/Text/Lazy.hs @@ -24,8 +24,8 @@ import Language.Haskell.TH import Language.Haskell.TH.Quote import Text.RE.REOptions import Text.RE.Tools.IsRegex -import Text.RE.ZeInternals.SearchReplace.TDFAEdPrime -import Text.RE.ZeInternals.TDFA +import Text.RE.ZeInternals.PCRE +import Text.RE.ZeInternals.SearchReplace.PCREEdPrime -- | @[ed| ... \/\/\/ ... |]@, is equivalent to @[edMultilineSensitive| ... \/\/\/ ... |]@, -- compiling a case-sensitive, multi-line 'SearchReplace' diff --git a/Text/RE/ZeInternals/Types/Match.lhs b/Text/RE/ZeInternals/Types/Match.lhs index 107fd54..84075d4 100644 --- a/Text/RE/ZeInternals/Types/Match.lhs +++ b/Text/RE/ZeInternals/Types/Match.lhs @@ -23,17 +23,30 @@ module Text.RE.ZeInternals.Types.Match , capture , (!$?) , captureMaybe + , RegexFix(..) , convertMatchText ) where \end{code} \begin{code} import Data.Array +import Data.Bits +import qualified Data.ByteString as BW +import qualified Data.ByteString.Char8 as B +import qualified Data.ByteString.Lazy.Char8 as LBS +import qualified Data.ByteString.UTF8 as B import Data.Maybe +import qualified Data.Sequence as S +import qualified Data.Text as T +import qualified Data.Text.Encoding as T +import qualified Data.Text.Lazy as LT import Data.Typeable +import Data.Word import Text.RE.ZeInternals.Types.Capture import Text.RE.ZeInternals.Types.CaptureID import Text.Regex.Base +import qualified Text.Regex.PCRE as PCRE +import qualified Text.Regex.TDFA as TDFA infixl 9 !$, !$$ \end{code} @@ -160,18 +173,23 @@ lookupCaptureID cid Match{..} = instance ( RegexContext regex source (AllTextSubmatches (Array Int) (source,(Int,Int))) , RegexLike regex source + , RegexFix regex source ) => RegexContext regex source (Match source) where - match r s = convertMatchText s $ getAllTextSubmatches $ match r s + match r s = convertMatchText r s $ getAllTextSubmatches $ match r s matchM r s = do y <- matchM r s - return $ convertMatchText s $ getAllTextSubmatches y + return $ convertMatchText r s $ getAllTextSubmatches y \end{code} \begin{code} -- | convert a regex-base native MatchText into a regex Match type -convertMatchText :: source -> MatchText source -> Match source -convertMatchText hay arr = +convertMatchText :: RegexFix regex source + => regex + -> source + -> MatchText source + -> Match source +convertMatchText re hay arr = Match { matchSource = hay , captureNames = noCaptureNames @@ -182,11 +200,78 @@ convertMatchText hay arr = where (lo,hi) = bounds arr - f (ndl,(off,len)) = + f (ndl,(off_,len_)) = Capture { captureSource = hay , capturedText = ndl , captureOffset = off , captureLength = len } + where + CharRange off len = utf8_correct re hay off_ len_ +\end{code} + +\begin{code} +data CharRange = CharRange !Int !Int + deriving (Show) + +class RegexFix regex source where + utf8_correct :: regex -> source -> Int -> Int -> CharRange + utf8_correct _ _ = CharRange + +instance RegexFix TDFA.Regex [Char] where +instance RegexFix TDFA.Regex B.ByteString where +instance RegexFix TDFA.Regex LBS.ByteString where +instance RegexFix TDFA.Regex T.Text where +instance RegexFix TDFA.Regex LT.Text where +instance RegexFix TDFA.Regex (S.Seq Char) where + +instance RegexFix PCRE.Regex [Char] where + utf8_correct _ = utf8_correct_bs . B.fromString +instance RegexFix PCRE.Regex B.ByteString where +instance RegexFix PCRE.Regex LBS.ByteString where +instance RegexFix PCRE.Regex T.Text where + utf8_correct _ = utf8_correct_bs . T.encodeUtf8 +instance RegexFix PCRE.Regex LT.Text where + utf8_correct _ = utf8_correct_bs . T.encodeUtf8 . LT.toStrict +instance RegexFix PCRE.Regex (S.Seq Char) where + +-- convert a byte offset+length in a UTF-8-encoded ByteString +-- into a character offset+length +utf8_correct_bs :: B.ByteString -> Int -> Int -> CharRange +utf8_correct_bs bs ix0 ln0 = case ix0+ln0 > BW.length bs of + True -> error "utf8_correct_bs: index+length out of range" + False -> skip 0 0 -- BW.index calls below should not fail + where + skip ix di = case compare ix ix0 of + GT -> error "utf8_correct_bs: UTF-8 decoding error" + EQ -> count ix di 0 ln0 + LT -> case u8_width $ BW.index bs ix of + Single -> skip (ix+1) di + Double -> skip (ix+2) $ di+1 + Triple -> skip (ix+3) $ di+2 + Quadruple -> skip (ix+4) $ di+3 + + count ix di dl c = case compare c 0 of + LT -> error "utf8_correct_bs: length ends inside character" + EQ -> CharRange (ix0-di) (ln0-dl) + GT -> case u8_width $ BW.index bs ix of + Single -> count (ix+1) di dl $ c-1 + Double -> count (ix+2) di (dl+1) $ c-2 + Triple -> count (ix+3) di (dl+2) $ c-3 + Quadruple -> count (ix+4) di (dl+3) $ c-4 + +data UTF8Size = Single | Double | Triple | Quadruple + deriving (Show) + +u8_width :: Word8 -> UTF8Size +u8_width w8 = case w8 .&. 0x80 == 0x00 of + True -> Single + False -> case w8 .&. 0xE0 == 0xC0 of + True -> Double + False -> case w8 .&. 0xF0 == 0xE0 of + True -> Triple + False -> case w8 .&. 0xF8 == 0xF0 of + True -> Quadruple + False -> error "u8_width: UTF-8 decoding error" \end{code} diff --git a/Text/RE/ZeInternals/Types/Matches.lhs b/Text/RE/ZeInternals/Types/Matches.lhs index f1819f4..1112090 100644 --- a/Text/RE/ZeInternals/Types/Matches.lhs +++ b/Text/RE/ZeInternals/Types/Matches.lhs @@ -71,10 +71,11 @@ mainCaptures ac = [ capture c0 cs | cs<-allMatches ac ] instance ( RegexContext regex source [MatchText source] , RegexLike regex source + , RegexFix regex source ) => RegexContext regex source (Matches source) where - match r s = Matches s $ map (convertMatchText s) $ match r s + match r s = Matches s $ map (convertMatchText r s) $ match r s matchM r s = do y <- matchM r s - return $ Matches s $ map (convertMatchText s) y + return $ Matches s $ map (convertMatchText r s) y \end{code} diff --git a/changelog b/changelog index a39acc0..30c81dd 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,10 @@ -*-change-log-*- -1.0.1.0 Chris Dornan 2017-06-05 +1.0.1.1 Chris Dornan 2017-06-04 + * regex-pcre not working properly with UTF-8 text (#141) + * ZeInternals/SearchReplace (#140) + +1.0.1.0 Chris Dornan 2017-06-03 * Text.RE.PCRE.Text[.Lazy] (#58) * Update LSTHaskell versions (#136) * Add re-top example (#137) diff --git a/examples/re-tests.lhs b/examples/re-tests.lhs index a1c4fc2..81a90eb 100644 --- a/examples/re-tests.lhs +++ b/examples/re-tests.lhs @@ -28,6 +28,8 @@ import Control.Monad import Data.Array import qualified Data.ByteString.Char8 as B import qualified Data.ByteString.Lazy.Char8 as LBS +import qualified Data.ByteString.Lazy.UTF8 as LBS +import qualified Data.ByteString.UTF8 as B import Data.Char import qualified Data.Foldable as F import qualified Data.HashMap.Strict as HM @@ -377,18 +379,33 @@ search_replace_tests = testGroup "SearchReplace" , testCase "TDFA.ed/LT" $ test LT.pack tdfa_eds , testCase "TDFA.ed/T(d)" $ test T.pack tdfa_eds' , testCase "PCRE.ed/LBS(d)" $ test LBS.pack pcre_eds' - , testg "TDFA.op/String" (T_ST.?=~/) (T_ST.*=~/) tdfa_sr - , testg "PCRE.op/String" (P_ST.?=~/) (P_ST.*=~/) pcre_sr - , testg "TDFA.op/B" (T_BS.?=~/) (T_BS.*=~/) tdfa_sr - , testg "PCRE.op/B" (P_BS.?=~/) (P_BS.*=~/) pcre_sr - , testg "TDFA.op/LBS" (TLBS.?=~/) (TLBS.*=~/) tdfa_sr - , testg "PCRE.op/LBS" (PLBS.?=~/) (PLBS.*=~/) pcre_sr - , testg "TDFA.op/T" (T_TX.?=~/) (T_TX.*=~/) tdfa_sr - , testg "PCRE.op/T" (P_TX.?=~/) (P_TX.*=~/) pcre_sr - , testg "TDFA.op/LT" (TLTX.?=~/) (TLTX.*=~/) tdfa_sr - , testg "PCRE.op/LT" (PLTX.?=~/) (PLTX.*=~/) pcre_sr - , testG "TDFA.op/S" (T_SQ.?=~/) (T_SQ.*=~/) tdfa_sr - , testG "PCRE.op/S" (P_SQ.?=~/) (P_SQ.*=~/) pcre_sr + , testg "TDFA.op" (T_ST.?=~/) (T_ST.*=~/) tdfa_sr + , testg "PCRE.op" (P_ST.?=~/) (P_ST.*=~/) pcre_sr + , testg "TDFA.op/String" (T_ST.?=~/) (T_ST.*=~/) tdfa_sr_str + , testg "PCRE.op/String" (P_ST.?=~/) (P_ST.*=~/) pcre_sr_str + , testg "TDFA.op/B" (T_BS.?=~/) (T_BS.*=~/) tdfa_sr_b + , testg "PCRE.op/B" (P_BS.?=~/) (P_BS.*=~/) pcre_sr_b + , testg "TDFA.op/LBS" (TLBS.?=~/) (TLBS.*=~/) tdfa_sr_lbs + , testg "PCRE.op/LBS" (PLBS.?=~/) (PLBS.*=~/) pcre_sr_lbs + , testg "TDFA.op/T" (T_TX.?=~/) (T_TX.*=~/) tdfa_sr_t + , testg "PCRE.op/T" (P_TX.?=~/) (P_TX.*=~/) pcre_sr_t + , testg "TDFA.op/LT" (TLTX.?=~/) (TLTX.*=~/) tdfa_sr_lt + , testg "PCRE.op/LT" (PLTX.?=~/) (PLTX.*=~/) pcre_sr_lt + , testG "TDFA.op/S" (T_SQ.?=~/) (T_SQ.*=~/) tdfa_sr_s + , testG "PCRE.op/S" (P_SQ.?=~/) (P_SQ.*=~/) pcre_sr_s + , testu "PCRE.U/String" id (P_ST.*=~/) [P_ST.ed|scientist///boffin|] (P_ST.*=~) [P_ST.re|λ-|] + , testu "PCRE.U/B" B.fromString (P_BS.*=~/) [P_BS.ed|scientist///boffin|] (P_BS.*=~) [P_BS.re|λ-|] + , testu "PCRE.U/LBS" LBS.fromString (PLBS.*=~/) [PLBS.ed|scientist///boffin|] (PLBS.*=~) [PLBS.re|λ-|] + , testu "PCRE.U/T" T.pack (P_TX.*=~/) [P_TX.ed|scientist///boffin|] (P_TX.*=~) [P_TX.re|λ-|] + , testu "PCRE.U/LT" LT.pack (PLTX.*=~/) [PLTX.ed|scientist///boffin|] (PLTX.*=~) [PLTX.re|λ-|] + , testu "PCRE.U/S" S.fromList (P_SQ.*=~/) [P_SQ.ed|scientist///boffin|] (P_SQ.*=~) [P_SQ.re|burble|] + , testu "TDFA.U/String" id (T_ST.*=~/) [T_ST.ed|scientist///boffin|] (T_ST.*=~) [T_ST.re|λ-|] + , testu "TDFA.U/B" B.fromString (T_BS.*=~/) [T_BS.ed|scientist///boffin|] (T_BS.*=~) [T_BS.re|burble|] + , testu "TDFA.U/LBS" LBS.fromString (TLBS.*=~/) [TLBS.ed|scientist///boffin|] (TLBS.*=~) [TLBS.re|burble|] + , testu "TDFA.U/T" T.pack (T_TX.*=~/) [T_TX.ed|scientist///boffin|] (T_TX.*=~) [T_TX.re|λ-|] + , testu "TDFA.U/LT" LT.pack (TLTX.*=~/) [TLTX.ed|scientist///boffin|] (TLTX.*=~) [TLTX.re|λ-|] + , testu "TDFA.U/S" S.fromList (T_SQ.*=~/) [T_SQ.ed|scientist///boffin|] (T_SQ.*=~) [T_SQ.re|λ-|] + ] where test :: IsRegex re a => (String->a) -> Edits Identity re a -> Assertion @@ -404,39 +421,84 @@ search_replace_tests = testGroup "SearchReplace" , testCase "*=~/" $ S.fromList rsm @=? S.fromList inp `opm` sr ] + testu lab inj op sr qop rex = testGroup lab + [ testCase "*=~/" $ inj unr @=? inj uni `op` sr + , testCase "*=~" $ 1 @=? countMatches (inj uni `qop` rex) + ] + inp, rs1, rsm :: IsString a => a inp = "16/03/2017 01/01/2000\n" rs1 = "2017-03-16 01/01/2000\n" rsm = "2017-03-16 2000-01-01\n" - tdfa_eds :: IsRegex TDFA.RE a => Edits Identity TDFA.RE a - tdfa_eds = Select [Template tdfa_sr] + uni, unr :: String + uni = "\x2070E-\8364-\955-scientist-burble" + unr = "\x2070E-\8364-\955-boffin-burble" + + tdfa_eds :: IsRegex TDFA.RE a => Edits Identity TDFA.RE a + tdfa_eds = Select [Template tdfa_sr] + + pcre_eds :: IsRegex PCRE.RE a => Edits Identity PCRE.RE a + pcre_eds = Select [Template pcre_sr] + + tdfa_sr :: IsRegex TDFA.RE a => SearchReplace TDFA.RE a + tdfa_sr = [TDFA.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + + pcre_sr :: IsRegex PCRE.RE a => SearchReplace PCRE.RE a + pcre_sr = [PCRE.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + + tdfa_sr_str :: SearchReplace TDFA.RE String + tdfa_sr_str = [T_ST.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + + pcre_sr_str :: SearchReplace PCRE.RE String + pcre_sr_str = [P_ST.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + + tdfa_sr_b :: SearchReplace TDFA.RE B.ByteString + tdfa_sr_b = [T_BS.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + + pcre_sr_b :: SearchReplace PCRE.RE B.ByteString + pcre_sr_b = [P_BS.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + + tdfa_sr_lbs :: SearchReplace TDFA.RE LBS.ByteString + tdfa_sr_lbs = [TLBS.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + + pcre_sr_lbs :: SearchReplace PCRE.RE LBS.ByteString + pcre_sr_lbs = [PLBS.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + + tdfa_sr_t :: SearchReplace TDFA.RE T.Text + tdfa_sr_t = [T_TX.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + + pcre_sr_t :: SearchReplace PCRE.RE T.Text + pcre_sr_t = [P_TX.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + + tdfa_sr_lt :: SearchReplace TDFA.RE LT.Text + tdfa_sr_lt = [TLTX.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] - pcre_eds :: IsRegex PCRE.RE a => Edits Identity PCRE.RE a - pcre_eds = Select [Template pcre_sr] + pcre_sr_lt :: SearchReplace PCRE.RE LT.Text + pcre_sr_lt = [PLTX.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] - tdfa_sr :: IsRegex TDFA.RE a => SearchReplace TDFA.RE a - tdfa_sr = [TDFA.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + tdfa_sr_s :: SearchReplace TDFA.RE (S.Seq Char) + tdfa_sr_s = [T_SQ.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] - pcre_sr :: IsRegex PCRE.RE a => SearchReplace PCRE.RE a - pcre_sr = [PCRE.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] + pcre_sr_s :: SearchReplace PCRE.RE (S.Seq Char) + pcre_sr_s = [P_SQ.ed|${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})///${y}-${m}-${d}|] - tdfa_eds' :: IsRegex TDFA.RE a => Edits Identity TDFA.RE a - tdfa_eds' = Select [Template $ tdfa_csr "${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})" "${y}-${m}-${d}"] + tdfa_eds' :: IsRegex TDFA.RE a => Edits Identity TDFA.RE a + tdfa_eds' = Select [Template $ tdfa_csr "${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})" "${y}-${m}-${d}"] - pcre_eds' :: IsRegex PCRE.RE a => Edits Identity PCRE.RE a - pcre_eds' = Select [Template $ pcre_csr "${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})" "${y}-${m}-${d}"] + pcre_eds' :: IsRegex PCRE.RE a => Edits Identity PCRE.RE a + pcre_eds' = Select [Template $ pcre_csr "${d}([0-9]{2})/${m}([0-9]{2})/${y}([0-9]{4})" "${y}-${m}-${d}"] - tdfa_csr :: IsRegex TDFA.RE s - => String - -> String - -> SearchReplace TDFA.RE s + tdfa_csr :: IsRegex TDFA.RE s + => String + -> String + -> SearchReplace TDFA.RE s tdfa_csr re_s = either error id . TDFA.compileSearchReplace re_s - pcre_csr :: IsRegex PCRE.RE s - => String - -> String - -> SearchReplace PCRE.RE s + pcre_csr :: IsRegex PCRE.RE s + => String + -> String + -> SearchReplace PCRE.RE s pcre_csr re_s = either error id . PCRE.compileSearchReplace re_s \end{code} diff --git a/lib/cabal-masters/constraints-incl.cabal b/lib/cabal-masters/constraints-incl.cabal index 0ea9ff2..8ecf584 100644 --- a/lib/cabal-masters/constraints-incl.cabal +++ b/lib/cabal-masters/constraints-incl.cabal @@ -29,3 +29,4 @@ %- time-locale-compat == 0.1.* %- transformers >= 0.2.2 && < 0.6 %- unordered-containers == 0.2.* +%- utf8-string == 1.0.* diff --git a/lib/cabal-masters/executables-incl.cabal b/lib/cabal-masters/executables-incl.cabal index 00f2a2f..7fa522e 100644 --- a/lib/cabal-masters/executables-incl.cabal +++ b/lib/cabal-masters/executables-incl.cabal @@ -66,7 +66,7 @@ Other-Modules: TestKit -%build-depends-prog regex regex-with-pcre array base base-compat bytestring containers directory filepath heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin shelly smallcheck tasty tasty-hunit tasty-smallcheck template-haskell text unordered-containers +%build-depends-prog regex regex-with-pcre array base base-compat bytestring containers directory filepath heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin shelly smallcheck tasty tasty-hunit tasty-smallcheck template-haskell text unordered-containers utf8-string %test-exe re-top Hs-Source-Dirs: examples diff --git a/lib/cabal-masters/mega-regex.cabal b/lib/cabal-masters/mega-regex.cabal index 95b4a9f..6d50f9a 100644 --- a/lib/cabal-masters/mega-regex.cabal +++ b/lib/cabal-masters/mega-regex.cabal @@ -38,7 +38,7 @@ Source-Repository this %include "lib/cabal-masters/library-incl.cabal" -%build-depends-lib array bytestring base base-compat containers hashable regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin regex-pcre-text template-haskell text time time-locale-compat transformers unordered-containers +%build-depends-lib array bytestring base base-compat containers hashable regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin regex-pcre-text template-haskell text time time-locale-compat transformers unordered-containers utf8-string %include "lib/cabal-masters/executables-incl.cabal" diff --git a/lib/cabal-masters/regex.cabal b/lib/cabal-masters/regex.cabal index 9b42fae..0360316 100644 --- a/lib/cabal-masters/regex.cabal +++ b/lib/cabal-masters/regex.cabal @@ -3,6 +3,6 @@ Name: regex %include "lib/cabal-masters/constraints-incl.cabal" %include "lib/cabal-masters/library-incl.cabal" exclude "PCRE" -%build-depends-lib array base base-compat bytestring containers hashable regex-base regex-tdfa regex-tdfa-text template-haskell text time time-locale-compat transformers unordered-containers +%build-depends-lib array base base-compat bytestring containers hashable regex-base regex-pcre-builtin regex-tdfa regex-tdfa-text template-haskell text time time-locale-compat transformers unordered-containers utf8-string -- Generated with re-gen-cabals diff --git a/lib/md/roadmap-incl.md b/lib/md/roadmap-incl.md index b2a68e9..ecccb0a 100644 --- a/lib/md/roadmap-incl.md +++ b/lib/md/roadmap-incl.md @@ -1,3 +1,4 @@ - [X] 2017-04-10 v1.0.0.0 [First stable release](https://github.com/iconnect/regex/milestone/3) - [X] 2017-06-03 v1.0.1.0 [PCRE.Text, strict PVP, Update Stackage vrns, add re-top](https://github.com/iconnect/regex/milestone/19) +- [X] 2017-06-04 v1.0.1.1 [Fix 1.0.1.0 release bug and provisionally fix UTF8/PCRE interworking](https://github.com/iconnect/regex/milestone/20) - [ ] 2017-08-31 v2.0.0.0 [Fast text replacement with benchmarks](https://github.com/iconnect/regex/milestone/4) diff --git a/lib/mega-regex.cabal b/lib/mega-regex.cabal index 6844fb5..dcc2e1d 100644 --- a/lib/mega-regex.cabal +++ b/lib/mega-regex.cabal @@ -1,5 +1,5 @@ Name: regex -Version: 1.0.1.0 +Version: 1.0.1.1 Synopsis: Toolkit for regex-base Description: A regular expression toolkit for regex-base with compile-time checking of RE syntax, data types for @@ -68,7 +68,7 @@ Source-Repository head Source-Repository this Type: git Location: https://github.com/iconnect/regex.git - Tag: 1.0.1.0 + Tag: 1.0.1.1 @@ -192,6 +192,7 @@ Library , time-locale-compat == 0.1.* , transformers >= 0.2.2 && < 0.6 , unordered-containers == 0.2.* + , utf8-string == 1.0.* Executable re-gen-cabals @@ -210,7 +211,7 @@ Executable re-gen-cabals -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -240,7 +241,7 @@ Test-Suite re-gen-cabals-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -270,7 +271,7 @@ Executable re-gen-modules -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -299,7 +300,7 @@ Test-Suite re-gen-modules-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -328,7 +329,7 @@ Executable re-include -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -354,7 +355,7 @@ Test-Suite re-include-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -380,7 +381,7 @@ Executable re-nginx-log-processor -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -414,7 +415,7 @@ Test-Suite re-nginx-log-processor-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -448,7 +449,7 @@ Executable re-prep -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -477,7 +478,7 @@ Test-Suite re-prep-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -506,7 +507,7 @@ Executable re-sort-imports -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -533,7 +534,7 @@ Test-Suite re-sort-imports-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -560,7 +561,7 @@ Executable re-tests -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -581,6 +582,7 @@ Executable re-tests , template-haskell >= 2.7 && < 2.12 , text == 1.2.* , unordered-containers == 0.2.* + , utf8-string == 1.0.* Test-Suite re-tests-test @@ -600,7 +602,7 @@ Test-Suite re-tests-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -621,6 +623,7 @@ Test-Suite re-tests-test , template-haskell >= 2.7 && < 2.12 , text == 1.2.* , unordered-containers == 0.2.* + , utf8-string == 1.0.* @@ -640,7 +643,7 @@ Executable re-top -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , blaze-html >= 0.8.1.0 @@ -673,7 +676,7 @@ Test-Suite re-top-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , blaze-html >= 0.8.1.0 @@ -707,7 +710,7 @@ Executable re-tutorial -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -751,7 +754,7 @@ Test-Suite re-tutorial-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -797,7 +800,7 @@ Test-Suite re-tutorial-os-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -841,7 +844,7 @@ Executable re-tutorial-options -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -885,7 +888,7 @@ Test-Suite re-tutorial-options-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -929,7 +932,7 @@ Executable re-tutorial-replacing -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -973,7 +976,7 @@ Test-Suite re-tutorial-replacing-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -1017,7 +1020,7 @@ Executable re-tutorial-testbench -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -1061,7 +1064,7 @@ Test-Suite re-tutorial-testbench-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -1105,7 +1108,7 @@ Executable re-tutorial-tools -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -1150,7 +1153,7 @@ Test-Suite re-tutorial-tools-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 diff --git a/lib/regex-examples.cabal b/lib/regex-examples.cabal index 700ed6b..70456c0 100644 --- a/lib/regex-examples.cabal +++ b/lib/regex-examples.cabal @@ -1,5 +1,5 @@ Name: regex-examples -Version: 1.0.1.0 +Version: 1.0.1.1 Synopsis: Tutorial, tests and example programs for regex Description: Tutorial, tests and example programs for regex, a Regular Expression Toolkit for regex-base with @@ -68,7 +68,7 @@ Source-Repository head Source-Repository this Type: git Location: https://github.com/iconnect/regex.git - Tag: 1.0.1.0 + Tag: 1.0.1.1 Executable re-gen-cabals @@ -87,7 +87,7 @@ Executable re-gen-cabals -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -117,7 +117,7 @@ Test-Suite re-gen-cabals-test -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -147,7 +147,7 @@ Executable re-gen-modules -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -176,7 +176,7 @@ Test-Suite re-gen-modules-test -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -205,7 +205,7 @@ Executable re-include -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -231,7 +231,7 @@ Test-Suite re-include-test -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -257,8 +257,8 @@ Executable re-nginx-log-processor -Wwarn Build-depends: - regex == 1.0.1.0 - , regex-with-pcre == 1.0.1.0 + regex == 1.0.1.1 + , regex-with-pcre == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -292,8 +292,8 @@ Test-Suite re-nginx-log-processor-test -Wwarn Build-depends: - regex == 1.0.1.0 - , regex-with-pcre == 1.0.1.0 + regex == 1.0.1.1 + , regex-with-pcre == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -327,7 +327,7 @@ Executable re-prep -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -356,7 +356,7 @@ Test-Suite re-prep-test -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -385,7 +385,7 @@ Executable re-sort-imports -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -412,7 +412,7 @@ Test-Suite re-sort-imports-test -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -439,8 +439,8 @@ Executable re-tests -Wwarn Build-depends: - regex == 1.0.1.0 - , regex-with-pcre == 1.0.1.0 + regex == 1.0.1.1 + , regex-with-pcre == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -461,6 +461,7 @@ Executable re-tests , template-haskell >= 2.7 && < 2.12 , text == 1.2.* , unordered-containers == 0.2.* + , utf8-string == 1.0.* Test-Suite re-tests-test @@ -480,8 +481,8 @@ Test-Suite re-tests-test -Wwarn Build-depends: - regex == 1.0.1.0 - , regex-with-pcre == 1.0.1.0 + regex == 1.0.1.1 + , regex-with-pcre == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -502,6 +503,7 @@ Test-Suite re-tests-test , template-haskell >= 2.7 && < 2.12 , text == 1.2.* , unordered-containers == 0.2.* + , utf8-string == 1.0.* @@ -521,7 +523,7 @@ Executable re-top -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , blaze-html >= 0.8.1.0 @@ -554,7 +556,7 @@ Test-Suite re-top-test -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , blaze-html >= 0.8.1.0 @@ -588,7 +590,7 @@ Executable re-tutorial -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -632,7 +634,7 @@ Test-Suite re-tutorial-test -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -678,7 +680,7 @@ Test-Suite re-tutorial-os-test -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -722,8 +724,8 @@ Executable re-tutorial-options -Wwarn Build-depends: - regex == 1.0.1.0 - , regex-with-pcre == 1.0.1.0 + regex == 1.0.1.1 + , regex-with-pcre == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -767,8 +769,8 @@ Test-Suite re-tutorial-options-test -Wwarn Build-depends: - regex == 1.0.1.0 - , regex-with-pcre == 1.0.1.0 + regex == 1.0.1.1 + , regex-with-pcre == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -812,7 +814,7 @@ Executable re-tutorial-replacing -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -856,7 +858,7 @@ Test-Suite re-tutorial-replacing-test -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -900,7 +902,7 @@ Executable re-tutorial-testbench -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -944,7 +946,7 @@ Test-Suite re-tutorial-testbench-test -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -988,7 +990,7 @@ Executable re-tutorial-tools -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -1033,7 +1035,7 @@ Test-Suite re-tutorial-tools-test -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 diff --git a/lib/regex-with-pcre.cabal b/lib/regex-with-pcre.cabal index c862c66..31541f0 100644 --- a/lib/regex-with-pcre.cabal +++ b/lib/regex-with-pcre.cabal @@ -1,5 +1,5 @@ Name: regex-with-pcre -Version: 1.0.1.0 +Version: 1.0.1.1 Synopsis: Toolkit for regex-base Description: A regular expression toolkit for regex-base with compile-time checking of RE syntax, data types for @@ -32,7 +32,7 @@ Source-Repository head Source-Repository this Type: git Location: https://github.com/iconnect/regex.git - Tag: 1.0.1.0 + Tag: 1.0.1.1 @@ -94,7 +94,7 @@ Library -Wwarn Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* diff --git a/lib/regex.cabal b/lib/regex.cabal index 1ea0d54..d26c9d3 100644 --- a/lib/regex.cabal +++ b/lib/regex.cabal @@ -1,5 +1,5 @@ Name: regex -Version: 1.0.1.0 +Version: 1.0.1.1 Synopsis: Toolkit for regex-base Description: A regular expression toolkit for regex-base with compile-time checking of RE syntax, data types for @@ -32,7 +32,7 @@ Source-Repository head Source-Repository this Type: git Location: https://github.com/iconnect/regex.git - Tag: 1.0.1.0 + Tag: 1.0.1.1 @@ -130,6 +130,7 @@ Library , containers >= 0.4 && < 0.6 , hashable == 1.2.* , regex-base == 0.93.* + , regex-pcre-builtin == 0.94.* , regex-tdfa == 1.2.* , regex-tdfa-text == 1.0.* , template-haskell >= 2.7 && < 2.12 @@ -138,6 +139,7 @@ Library , time-locale-compat == 0.1.* , transformers >= 0.2.2 && < 0.6 , unordered-containers == 0.2.* + , utf8-string == 1.0.* -- Generated with re-gen-cabals diff --git a/lib/version.txt b/lib/version.txt index 23c6598..86516d0 100644 --- a/lib/version.txt +++ b/lib/version.txt @@ -1 +1 @@ -1.0.1.0 \ No newline at end of file +1.0.1.1 \ No newline at end of file diff --git a/regex.cabal b/regex.cabal index 6844fb5..dcc2e1d 100644 --- a/regex.cabal +++ b/regex.cabal @@ -1,5 +1,5 @@ Name: regex -Version: 1.0.1.0 +Version: 1.0.1.1 Synopsis: Toolkit for regex-base Description: A regular expression toolkit for regex-base with compile-time checking of RE syntax, data types for @@ -68,7 +68,7 @@ Source-Repository head Source-Repository this Type: git Location: https://github.com/iconnect/regex.git - Tag: 1.0.1.0 + Tag: 1.0.1.1 @@ -192,6 +192,7 @@ Library , time-locale-compat == 0.1.* , transformers >= 0.2.2 && < 0.6 , unordered-containers == 0.2.* + , utf8-string == 1.0.* Executable re-gen-cabals @@ -210,7 +211,7 @@ Executable re-gen-cabals -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -240,7 +241,7 @@ Test-Suite re-gen-cabals-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -270,7 +271,7 @@ Executable re-gen-modules -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -299,7 +300,7 @@ Test-Suite re-gen-modules-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -328,7 +329,7 @@ Executable re-include -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -354,7 +355,7 @@ Test-Suite re-include-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -380,7 +381,7 @@ Executable re-nginx-log-processor -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -414,7 +415,7 @@ Test-Suite re-nginx-log-processor-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -448,7 +449,7 @@ Executable re-prep -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -477,7 +478,7 @@ Test-Suite re-prep-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -506,7 +507,7 @@ Executable re-sort-imports -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -533,7 +534,7 @@ Test-Suite re-sort-imports-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , bytestring == 0.10.* @@ -560,7 +561,7 @@ Executable re-tests -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -581,6 +582,7 @@ Executable re-tests , template-haskell >= 2.7 && < 2.12 , text == 1.2.* , unordered-containers == 0.2.* + , utf8-string == 1.0.* Test-Suite re-tests-test @@ -600,7 +602,7 @@ Test-Suite re-tests-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -621,6 +623,7 @@ Test-Suite re-tests-test , template-haskell >= 2.7 && < 2.12 , text == 1.2.* , unordered-containers == 0.2.* + , utf8-string == 1.0.* @@ -640,7 +643,7 @@ Executable re-top -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , blaze-html >= 0.8.1.0 @@ -673,7 +676,7 @@ Test-Suite re-top-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 , blaze-html >= 0.8.1.0 @@ -707,7 +710,7 @@ Executable re-tutorial -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -751,7 +754,7 @@ Test-Suite re-tutorial-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -797,7 +800,7 @@ Test-Suite re-tutorial-os-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -841,7 +844,7 @@ Executable re-tutorial-options -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -885,7 +888,7 @@ Test-Suite re-tutorial-options-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -929,7 +932,7 @@ Executable re-tutorial-replacing -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -973,7 +976,7 @@ Test-Suite re-tutorial-replacing-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -1017,7 +1020,7 @@ Executable re-tutorial-testbench -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -1061,7 +1064,7 @@ Test-Suite re-tutorial-testbench-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -1105,7 +1108,7 @@ Executable re-tutorial-tools -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 @@ -1150,7 +1153,7 @@ Test-Suite re-tutorial-tools-test -Werror Build-depends: - regex == 1.0.1.0 + regex == 1.0.1.1 , array >= 0.4 && < 0.6 , base >= 4 && < 5 , base-compat >= 0.6 && < 0.10 diff --git a/releases/regex-1.0.1.1.tar.gz b/releases/regex-1.0.1.1.tar.gz new file mode 100644 index 0000000..bfd596a Binary files /dev/null and b/releases/regex-1.0.1.1.tar.gz differ diff --git a/releases/regex-examples-1.0.1.1.tar.gz b/releases/regex-examples-1.0.1.1.tar.gz new file mode 100644 index 0000000..cd9dd53 Binary files /dev/null and b/releases/regex-examples-1.0.1.1.tar.gz differ diff --git a/releases/regex-with-pcre-1.0.1.1.tar.gz b/releases/regex-with-pcre-1.0.1.1.tar.gz new file mode 100644 index 0000000..5c8f25f Binary files /dev/null and b/releases/regex-with-pcre-1.0.1.1.tar.gz differ