From ac8da837c3ef1bf9a8b55e5942504034ca9c8c27 Mon Sep 17 00:00:00 2001 From: Chris Dornan Date: Sun, 19 Feb 2017 08:27:43 +0000 Subject: [PATCH 1/5] reorganize cabal templates * root cabal package.cabal file renamed to mega-regex * mega-regex generated from include files that are also used to make up the regex.cabal and regex-examples.cabal * mega-regex tested for test, install and basic sdist --- examples/TestKit.lhs | 19 ++ examples/re-gen-cabals.lhs | 11 +- examples/re-include.lhs | 14 +- examples/re-prep.lhs | 15 -- lib/cabal-masters/constraints-incl.cabal | 24 +++ lib/cabal-masters/executables-incl.cabal | 116 +++++++++++ lib/cabal-masters/library-incl.cabal | 43 ++++ lib/cabal-masters/mega-regex.cabal | 56 +++++ lib/cabal-masters/regex-examples.cabal | 41 ++++ lib/cabal-masters/regex.cabal | 196 +----------------- lib/cabal-masters/src | 1 + .../test-extra-source-files-incl.cabal | 17 ++ regex.cabal => mega-regex.cabal | 29 ++- src | 1 + 14 files changed, 361 insertions(+), 222 deletions(-) create mode 100644 lib/cabal-masters/constraints-incl.cabal create mode 100644 lib/cabal-masters/executables-incl.cabal create mode 100644 lib/cabal-masters/library-incl.cabal create mode 100644 lib/cabal-masters/mega-regex.cabal create mode 100644 lib/cabal-masters/regex-examples.cabal create mode 120000 lib/cabal-masters/src create mode 100644 lib/cabal-masters/test-extra-source-files-incl.cabal rename regex.cabal => mega-regex.cabal (95%) create mode 120000 src diff --git a/examples/TestKit.lhs b/examples/TestKit.lhs index cb6c67d..e92750e 100644 --- a/examples/TestKit.lhs +++ b/examples/TestKit.lhs @@ -18,6 +18,7 @@ module TestKit , runTests , checkThis , test_pp + , include , cmp ) where @@ -163,6 +164,24 @@ test_pp lab loop test_file gold_file = do tmp_pth = "tmp/mod.lhs" \end{code} + +simple include processor +------------------------ + +\begin{code} +include :: LBS.ByteString -> IO LBS.ByteString +include = sed' $ Select + [ (,) [re|^%include ${file}(@{%string})$|] $ EDIT_fun TOP incl + , (,) [re|^.*$|] $ EDIT_fun TOP $ \_ _ _ _->return Nothing + ] + where + incl _ mtch _ _ = Just <$> LBS.readFile (prs_s $ mtch !$$ [cp|file|]) + prs_s = maybe (error "include") T.unpack . parseString +\end{code} + +cmp +--- + \begin{code} cmp :: T.Text -> T.Text -> IO Bool cmp src dst = handle hdl $ do diff --git a/examples/re-gen-cabals.lhs b/examples/re-gen-cabals.lhs index 47c3b80..fe4e0b8 100644 --- a/examples/re-gen-cabals.lhs +++ b/examples/re-gen-cabals.lhs @@ -31,7 +31,7 @@ main = do case as of [] -> test ["test"] -> test - ["gen"] -> gen "lib/cabal-masters/regex.cabal" "regex.cabal" + ["gen"] -> gen "lib/cabal-masters/mega-regex.cabal" "mega-regex.cabal" _ -> do hPutStrLn stderr $ "usage: " ++ pn ++ " [test|gen]" exitWith $ ExitFailure 1 @@ -39,8 +39,8 @@ main = do test :: IO () test = do createDirectoryIfMissing False "tmp" - gen "lib/cabal-masters/regex.cabal" "tmp/regex.cabal" - ok <- cmp "tmp/regex.cabal" "regex.cabal" + gen "lib/cabal-masters/mega-regex.cabal" "tmp/mega-regex.cabal" + ok <- cmp "tmp/mega-regex.cabal" "mega-regex.cabal" case ok of True -> return () False -> exitWith $ ExitFailure 1 @@ -48,8 +48,9 @@ test = do gen :: FilePath -> FilePath -> IO () gen in_f out_f = do ctx <- setup - substVersion in_f "tmp/regex-vrn.cabal" - sed (gc_script ctx) "tmp/regex-vrn.cabal" out_f + LBS.writeFile out_f =<< + sed' (gc_script ctx) =<< substVersion_ =<< include =<< + LBS.readFile in_f data Ctx = Ctx diff --git a/examples/re-include.lhs b/examples/re-include.lhs index bffd814..021dd82 100644 --- a/examples/re-include.lhs +++ b/examples/re-include.lhs @@ -50,18 +50,18 @@ The Sed Script loop :: FilePath -> FilePath -> IO () loop = sed $ Select - [ (,) [re|^%include ${file}(@{%string}) ${rex}(@{%string})$|] $ EDIT_fun TOP include + [ (,) [re|^%include ${file}(@{%string}) ${rex}(@{%string})$|] $ EDIT_fun TOP include_file , (,) [re|^.*$|] $ EDIT_fun TOP $ \_ _ _ _->return Nothing ] \end{code} \begin{code} -include :: LineNo - -> Match LBS.ByteString - -> Location - -> Capture LBS.ByteString - -> IO (Maybe LBS.ByteString) -include _ mtch _ _ = fmap Just $ +include_file :: LineNo + -> Match LBS.ByteString + -> Location + -> Capture LBS.ByteString + -> IO (Maybe LBS.ByteString) +include_file _ mtch _ _ = fmap Just $ extract fp =<< compileRegex () re_s where fp = prs_s $ captureText [cp|file|] mtch diff --git a/examples/re-prep.lhs b/examples/re-prep.lhs index 9733486..99a54c9 100644 --- a/examples/re-prep.lhs +++ b/examples/re-prep.lhs @@ -790,21 +790,6 @@ pandoc_lhs' title repo_path in_file out_file = do \end{code} -simple include processor ------------------------- - -\begin{code} -include :: LBS.ByteString -> IO LBS.ByteString -include = sed' $ Select - [ (,) [re|^%include ${file}(@{%string})$|] $ EDIT_fun TOP incl - , (,) [re|^.*$|] $ EDIT_fun TOP $ \_ _ _ _->return Nothing - ] - where - incl _ mtch _ _ = Just <$> LBS.readFile (prs_s $ mtch !$$ [cp|file|]) - prs_s = maybe (error "include") T.unpack . parseString -\end{code} - - branding -------- diff --git a/lib/cabal-masters/constraints-incl.cabal b/lib/cabal-masters/constraints-incl.cabal new file mode 100644 index 0000000..5b0a3d1 --- /dev/null +++ b/lib/cabal-masters/constraints-incl.cabal @@ -0,0 +1,24 @@ +%- array >= 0.4 +%- base >= 4 && < 5 +%- base-compat >= 0.6.0 +%- bytestring >= 0.10.2.0 +%- containers >= 0.4 +%- directory >= 1.2.1.0 +%- hashable >= 1.2.3.3 +%- heredoc >= 0.2.0.0 +%- http-conduit >= 2.1.7.2 +%- regex-base >= 0.93.2 +%- regex-pcre-builtin >= 0.94.4.8.8.35 +%- regex-tdfa >= 1.2.0 +%- regex-tdfa-text >= 1.0.0.3 +%- shelly >= 1.6.1.2 +%- smallcheck >= 1.1.1 +%- tasty >= 0.10.1.2 +%- tasty-hunit >= 0.9.2 +%- tasty-smallcheck >= 0.8.0.1 +%- template-haskell >= 2.7 +%- text >= 1.2.0.6 +%- time >= 1.4.2 +%- time-locale-compat >= 0.1.0.1 +%- transformers >= 0.2.2 +%- unordered-containers >= 0.2.5.1 diff --git a/lib/cabal-masters/executables-incl.cabal b/lib/cabal-masters/executables-incl.cabal new file mode 100644 index 0000000..4d7fc52 --- /dev/null +++ b/lib/cabal-masters/executables-incl.cabal @@ -0,0 +1,116 @@ +%test-exe re-gen-cabals + Hs-Source-Dirs: examples + + Main-Is: re-gen-cabals.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + +%build-depends regex array base base-compat containers bytestring directory regex-base regex-tdfa shelly text + +%test-exe re-gen-modules + Hs-Source-Dirs: examples + + Main-Is: re-gen-modules.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + +%build-depends regex array base base-compat bytestring directory regex-base regex-tdfa shelly text + +%test-exe re-include + Hs-Source-Dirs: examples + + Main-Is: re-include.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + +%build-depends regex base base-compat bytestring directory shelly text + +%test-exe re-nginx-log-processor + Hs-Source-Dirs: examples + + Main-Is: re-nginx-log-processor.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + +%build-depends regex array base base-compat bytestring directory regex-base regex-tdfa shelly text time time-locale-compat transformers unordered-containers + +%test-exe re-prep + Hs-Source-Dirs: examples + + Main-Is: re-prep.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + +%build-depends regex base base-compat bytestring directory heredoc http-conduit shelly text + +%test-exe re-tests + Hs-Source-Dirs: examples + + Main-Is: re-tests.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + +%build-depends regex array base base-compat bytestring containers directory heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin smallcheck tasty tasty-hunit tasty-smallcheck template-haskell text unordered-containers + +%test-exe re-tutorial + Hs-Source-Dirs: examples + + Main-Is: re-tutorial.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + Default-Extensions: QuasiQuotes + GHC-Options: + -Wall + -fwarn-tabs + +%build-depends regex array base base-compat bytestring containers directory hashable heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin shelly smallcheck tasty tasty-hunit tasty-smallcheck template-haskell transformers text time time-locale-compat unordered-containers + +%test re-tutorial-os + Hs-Source-Dirs: examples + + Main-Is: re-tutorial.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + Extensions: OverloadedStrings + Default-Extensions: QuasiQuotes + GHC-Options: + -Wall + -fwarn-tabs + +%build-depends regex array base base-compat bytestring containers directory hashable heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin shelly smallcheck tasty tasty-hunit tasty-smallcheck template-haskell transformers text time time-locale-compat unordered-containers diff --git a/lib/cabal-masters/library-incl.cabal b/lib/cabal-masters/library-incl.cabal new file mode 100644 index 0000000..d18f694 --- /dev/null +++ b/lib/cabal-masters/library-incl.cabal @@ -0,0 +1,43 @@ +Library + Hs-Source-Dirs: . + Exposed-Modules: + Text.RE + Text.RE.Capture + Text.RE.CaptureID + Text.RE.Edit + Text.RE.Internal.NamedCaptures + Text.RE.Internal.PreludeMacros + Text.RE.Internal.QQ + Text.RE.IsRegex + Text.RE.LineNo + Text.RE.Options + Text.RE.Parsers + Text.RE.PCRE + Text.RE.PCRE.ByteString + Text.RE.PCRE.ByteString.Lazy + Text.RE.PCRE.RE + Text.RE.PCRE.Sequence + Text.RE.PCRE.String + Text.RE.Replace + Text.RE.TDFA + Text.RE.TDFA.ByteString + Text.RE.TDFA.ByteString.Lazy + Text.RE.TDFA.RE + Text.RE.TDFA.Sequence + Text.RE.TDFA.String + Text.RE.TDFA.Text + Text.RE.TDFA.Text.Lazy + Text.RE.TestBench + Text.RE.Tools.Grep + Text.RE.Tools.Lex + Text.RE.Tools.Sed + + Other-Modules: + Text.RE.Internal.AddCaptureNames + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + +%build-depends array bytestring base base-compat containers hashable heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin template-haskell text time time-locale-compat transformers unordered-containers diff --git a/lib/cabal-masters/mega-regex.cabal b/lib/cabal-masters/mega-regex.cabal new file mode 100644 index 0000000..b395a14 --- /dev/null +++ b/lib/cabal-masters/mega-regex.cabal @@ -0,0 +1,56 @@ +Name: mega-regex +Version: <<$version$>> +Synopsis: Toolkit for regex-base +Description: A Regular Expression Toolkit for regex-base with + Compile-time checking of RE syntax, data types for + matches and captures, a text replacement toolkit, + portable options, high-level AWK-like tools + for building text processing apps, regular expression + macros and test bench, a tutorial and copious examples. +Homepage: http://regex.uk +Author: Chris Dornan +License: BSD3 +license-file: LICENSE +Maintainer: Chris Dornan +Copyright: Chris Dornan 2016-2017 +Category: Text +Build-type: Simple +Stability: RFC +bug-reports: http://issues.regex.uk + +Extra-Source-Files: + README.markdown + changelog + data/access-errors.log + data/access.log + data/error.log + data/events.log + data/include-result.lhs + data/pp-result-doc.lhs + data/pp-result-gen.lhs + data/pp-test.lhs + lib/cabal-masters/regex.cabal + lib/version.txt + src/Text/RE/TDFA/ByteString/Lazy.hs + docs/pcre-nginx-log-processor.txt + docs/tdfa-macros.txt + docs/pcre-macros.txt + +Cabal-Version: >= 1.16 + +Source-Repository head + type: git + location: https://github.com/iconnect/regex.git + +Source-Repository this + Type: git + Location: https://github.com/iconnect/regex.git + Tag: <<$version$>> + +%include "lib/cabal-masters/constraints-incl.cabal" + +%include "lib/cabal-masters/library-incl.cabal" + +%include "lib/cabal-masters/executables-incl.cabal" + +-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals diff --git a/lib/cabal-masters/regex-examples.cabal b/lib/cabal-masters/regex-examples.cabal new file mode 100644 index 0000000..717ccd5 --- /dev/null +++ b/lib/cabal-masters/regex-examples.cabal @@ -0,0 +1,41 @@ +Name: regex-examples +Version: <<$version$>> +Synopsis: Tutorial, tests and example programs for regex +Description: Tutorial, tests and example programs for regex, + a Regular Expression Toolkit for regex-base with + Compile-time checking of RE syntax, data types for + matches and captures, a text replacement toolkit, + portable options, high-level AWK-like tools + for building text processing apps, regular expression + macros and test bench, a tutorial and copious examples. +Homepage: http://regex.uk +Author: Chris Dornan +License: BSD3 +license-file: LICENSE +Maintainer: Chris Dornan +Copyright: Chris Dornan 2016-2017 +Category: Text +Build-type: Simple +Stability: RFC +bug-reports: http://issues.regex.uk + +%include "lib/cabal-masters/test-extra-source-files-incl.cabal" + +Cabal-Version: >= 1.16 + +Source-Repository head + type: git + location: https://github.com/iconnect/regex.git + +Source-Repository this + Type: git + Location: https://github.com/iconnect/regex.git + Tag: <<$version$>> + +%include "lib/cabal-masters/constraints-incl.cabal" + +%include "lib/cabal-masters/library-incl.cabal" + +%include "lib/cabal-masters/executables-incl.cabal" + +-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals diff --git a/lib/cabal-masters/regex.cabal b/lib/cabal-masters/regex.cabal index 045f20f..0959174 100644 --- a/lib/cabal-masters/regex.cabal +++ b/lib/cabal-masters/regex.cabal @@ -7,16 +7,16 @@ Description: A Regular Expression Toolkit for regex-base with portable options, high-level AWK-like tools for building text processing apps, regular expression macros and test bench, a tutorial and copious examples. -Homepage: https://iconnect.github.io/regex +Homepage: http://regex.uk Author: Chris Dornan License: BSD3 license-file: LICENSE -Maintainer: chris.dornan@irisconnect.co.uk +Maintainer: Chris Dornan Copyright: Chris Dornan 2016-2017 Category: Text Build-type: Simple -Stability: rfc -bug-reports: https://github.com/iconnect/regex/issues +Stability: RFC +bug-reports: http://issues.regex.uk Extra-Source-Files: README.markdown @@ -33,190 +33,8 @@ Source-Repository this Location: https://github.com/iconnect/regex.git Tag: <<$version$>> -%- array >= 0.4 -%- base >= 4 && < 5 -%- base-compat >= 0.6.0 -%- bytestring >= 0.10.2.0 -%- containers >= 0.4 -%- directory >= 1.2.1.0 -%- hashable >= 1.2.3.3 -%- heredoc >= 0.2.0.0 -%- http-conduit >= 2.1.7.2 -%- regex-base >= 0.93.2 -%- regex-pcre-builtin >= 0.94.4.8.8.35 -%- regex-tdfa >= 1.2.0 -%- regex-tdfa-text >= 1.0.0.3 -%- shelly >= 1.6.1.2 -%- smallcheck >= 1.1.1 -%- tasty >= 0.10.1.2 -%- tasty-hunit >= 0.9.2 -%- tasty-smallcheck >= 0.8.0.1 -%- template-haskell >= 2.7 -%- text >= 1.2.0.6 -%- time >= 1.4.2 -%- time-locale-compat >= 0.1.0.1 -%- transformers >= 0.2.2 -%- unordered-containers >= 0.2.5.1 +%include "lib/cabal-masters/constraints-incl.cabal" -Library - Hs-Source-Dirs: . - Exposed-Modules: - Text.RE - Text.RE.Capture - Text.RE.CaptureID - Text.RE.Edit - Text.RE.Internal.NamedCaptures - Text.RE.Internal.PreludeMacros - Text.RE.Internal.QQ - Text.RE.IsRegex - Text.RE.LineNo - Text.RE.Options - Text.RE.Parsers - Text.RE.PCRE - Text.RE.PCRE.ByteString - Text.RE.PCRE.ByteString.Lazy - Text.RE.PCRE.RE - Text.RE.PCRE.Sequence - Text.RE.PCRE.String - Text.RE.Replace - Text.RE.TDFA - Text.RE.TDFA.ByteString - Text.RE.TDFA.ByteString.Lazy - Text.RE.TDFA.RE - Text.RE.TDFA.Sequence - Text.RE.TDFA.String - Text.RE.TDFA.Text - Text.RE.TDFA.Text.Lazy - Text.RE.TestBench - Text.RE.Tools.Grep - Text.RE.Tools.Lex - Text.RE.Tools.Sed +%include "lib/cabal-masters/library-incl.cabal" - Other-Modules: - Text.RE.Internal.AddCaptureNames - - Default-Language: Haskell2010 - GHC-Options: - -Wall - -fwarn-tabs - -%build-depends array bytestring base base-compat containers hashable heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin template-haskell text time time-locale-compat transformers unordered-containers - -%test-exe re-gen-cabals - Hs-Source-Dirs: examples - - Main-Is: re-gen-cabals.lhs - - Other-Modules: - TestKit - - Default-Language: Haskell2010 - GHC-Options: - -Wall - -fwarn-tabs - -%build-depends regex array base base-compat containers bytestring directory regex-base regex-tdfa shelly text - -%test-exe re-gen-modules - Hs-Source-Dirs: examples - - Main-Is: re-gen-modules.lhs - - Default-Language: Haskell2010 - GHC-Options: - -Wall - -fwarn-tabs - -%build-depends regex array base base-compat bytestring directory regex-base regex-tdfa shelly text - -%test-exe re-include - Hs-Source-Dirs: examples - - Main-Is: re-include.lhs - - Default-Language: Haskell2010 - GHC-Options: - -Wall - -fwarn-tabs - - Other-Modules: - TestKit - -%build-depends regex base base-compat bytestring directory shelly text - -%test-exe re-nginx-log-processor - Hs-Source-Dirs: examples - - Main-Is: re-nginx-log-processor.lhs - - Default-Language: Haskell2010 - GHC-Options: - -Wall - -fwarn-tabs - -%build-depends regex array base base-compat bytestring directory regex-base regex-tdfa shelly text time time-locale-compat transformers unordered-containers - -%test-exe re-prep - Hs-Source-Dirs: examples - - Main-Is: re-prep.lhs - - Default-Language: Haskell2010 - GHC-Options: - -Wall - -fwarn-tabs - - Other-Modules: - TestKit - -%build-depends regex base base-compat bytestring directory heredoc http-conduit shelly text - -%test-exe re-tests - Hs-Source-Dirs: examples - - Main-Is: re-tests.lhs - - Default-Language: Haskell2010 - GHC-Options: - -Wall - -fwarn-tabs - - Other-Modules: - TestKit - -%build-depends regex array base base-compat bytestring containers directory heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin smallcheck tasty tasty-hunit tasty-smallcheck template-haskell text unordered-containers - -%test-exe re-tutorial - Hs-Source-Dirs: examples - - Main-Is: re-tutorial.lhs - - Other-Modules: - TestKit - - Default-Language: Haskell2010 - Default-Extensions: QuasiQuotes - GHC-Options: - -Wall - -fwarn-tabs - -%build-depends regex array base base-compat bytestring containers directory hashable heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin shelly smallcheck tasty tasty-hunit tasty-smallcheck template-haskell transformers text time time-locale-compat unordered-containers - -%test re-tutorial-os - Hs-Source-Dirs: examples - - Main-Is: re-tutorial.lhs - - Other-Modules: - TestKit - - Default-Language: Haskell2010 - Extensions: OverloadedStrings - Default-Extensions: QuasiQuotes - GHC-Options: - -Wall - -fwarn-tabs - -%build-depends regex array base base-compat bytestring containers directory hashable heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin shelly smallcheck tasty tasty-hunit tasty-smallcheck template-haskell transformers text time time-locale-compat unordered-containers - --- Generated from lib/rgex-master.cabal with re-gen-cabals +-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals diff --git a/lib/cabal-masters/src b/lib/cabal-masters/src new file mode 120000 index 0000000..e831038 --- /dev/null +++ b/lib/cabal-masters/src @@ -0,0 +1 @@ +src \ No newline at end of file diff --git a/lib/cabal-masters/test-extra-source-files-incl.cabal b/lib/cabal-masters/test-extra-source-files-incl.cabal new file mode 100644 index 0000000..ddafe66 --- /dev/null +++ b/lib/cabal-masters/test-extra-source-files-incl.cabal @@ -0,0 +1,17 @@ +Extra-Source-Files: + README.markdown + changelog + data/access-errors.log + data/access.log + data/error.log + data/events.log + data/include-result.lhs + data/pp-result-doc.lhs + data/pp-result-gen.lhs + data/pp-test.lhs + lib/cabal-masters/regex.cabal + lib/version.txt + src/Text/RE/TDFA/ByteString/Lazy.hs + docs/pcre-nginx-log-processor.txt + docs/tdfa-macros.txt + docs/pcre-macros.txt diff --git a/regex.cabal b/mega-regex.cabal similarity index 95% rename from regex.cabal rename to mega-regex.cabal index 4ea0dbb..9b5fde2 100644 --- a/regex.cabal +++ b/mega-regex.cabal @@ -1,4 +1,4 @@ -Name: regex +Name: mega-regex Version: 0.1.0.0 Synopsis: Toolkit for regex-base Description: A Regular Expression Toolkit for regex-base with @@ -7,20 +7,34 @@ Description: A Regular Expression Toolkit for regex-base with portable options, high-level AWK-like tools for building text processing apps, regular expression macros and test bench, a tutorial and copious examples. -Homepage: https://iconnect.github.io/regex +Homepage: http://regex.uk Author: Chris Dornan License: BSD3 license-file: LICENSE -Maintainer: chris.dornan@irisconnect.co.uk +Maintainer: Chris Dornan Copyright: Chris Dornan 2016-2017 Category: Text Build-type: Simple -Stability: rfc -bug-reports: https://github.com/iconnect/regex/issues +Stability: RFC +bug-reports: http://issues.regex.uk Extra-Source-Files: README.markdown changelog + data/access-errors.log + data/access.log + data/error.log + data/events.log + data/include-result.lhs + data/pp-result-doc.lhs + data/pp-result-gen.lhs + data/pp-test.lhs + lib/cabal-masters/regex.cabal + lib/version.txt + src/Text/RE/TDFA/ByteString/Lazy.hs + docs/pcre-nginx-log-processor.txt + docs/tdfa-macros.txt + docs/pcre-macros.txt Cabal-Version: >= 1.16 @@ -34,6 +48,7 @@ Source-Repository this Tag: 0.1.0.0 + Library Hs-Source-Dirs: . Exposed-Modules: @@ -96,6 +111,7 @@ Library , unordered-containers >= 0.2.5.1 + Executable re-gen-cabals Hs-Source-Dirs: examples @@ -555,4 +571,5 @@ Test-Suite re-tutorial-os-test , unordered-containers >= 0.2.5.1 --- Generated from lib/rgex-master.cabal with re-gen-cabals + +-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals diff --git a/src b/src new file mode 120000 index 0000000..945c9b4 --- /dev/null +++ b/src @@ -0,0 +1 @@ +. \ No newline at end of file From dc76a6edd013baa142da07ff7d6713256e679ac4 Mon Sep 17 00:00:00 2001 From: Chris Dornan Date: Mon, 20 Feb 2017 01:47:00 +0000 Subject: [PATCH 2/5] Split into regex and regex-examples (#6) Fixes #6. Also added `ic-gen-cabals sdist` for generating the Hackage tarballs and setting the git tag (using the roadmap summary). The tag is **not** pushed. --- README.md | 12 +- Text/RE.hs | 1 + Text/RE/Tools/Grep.lhs | 3 +- changelog | 6 +- docs/Grep.html | 3 +- docs/TestKit.html | 56 +- docs/badges/hackage.svg | 4 +- docs/changelog.html | 6 +- docs/index.html | 15 +- docs/re-gen-cabals.html | 73 ++- docs/re-include.html | 14 +- docs/re-prep.html | 65 +- docs/re-tutorial.html | 2 +- docs/roadmap.html | 7 +- examples/TestKit.lhs | 45 +- examples/re-gen-cabals.lhs | 71 ++- examples/re-prep.lhs | 56 +- lib/README-regex-examples.md | 109 ++++ lib/README-regex.md | 109 ++++ lib/cabal-masters/constraints-incl.cabal | 1 + lib/cabal-masters/mega-regex.cabal | 20 +- lib/cabal-masters/src | 1 - .../test-extra-source-files-incl.cabal | 18 +- lib/md/index.md | 9 +- lib/md/roadmap-incl.md | 5 +- mega-regex.cabal => lib/mega-regex.cabal | 55 +- lib/regex-examples.cabal | 593 ++++++++++++++++++ lib/regex.cabal | 101 +++ lib/version.txt | 2 +- regex.cabal | 592 +++++++++++++++++ 30 files changed, 1887 insertions(+), 167 deletions(-) create mode 100644 lib/README-regex-examples.md create mode 100644 lib/README-regex.md delete mode 120000 lib/cabal-masters/src rename mega-regex.cabal => lib/mega-regex.cabal (92%) create mode 100644 lib/regex-examples.cabal create mode 100644 lib/regex.cabal create mode 100644 regex.cabal diff --git a/README.md b/README.md index 0d2ad22..19494bc 100644 --- a/README.md +++ b/README.md @@ -19,12 +19,20 @@ Regex is a regular expression toolkit for regex-base with: See the [About page](http://about.regex.uk) for details. +## regex and regex-examples + + * the `regex` package contains the regex library + * the `regex-examples` package contains the tutorial, tests + and example programs + + ## Road Map - [X] 2017-01-26 v0.0.0.1 Pre-release (I) - [X] 2017-01-30 v0.0.0.2 Pre-release (II) -- [X] 2017-02-19 v0.1.0.0 [Proposed core API with presentable Haddocks](https://github.com/iconnect/regex/milestone/1) -- [ ] 2017-02-26 v0.1.1.0 [Tutorials and examples finalized](https://github.com/iconnect/regex/milestone/2) +- [X] 2017-02-18 v0.1.0.0 [Proposed core API with presentable Haddocks](https://github.com/iconnect/regex/milestone/1) +- [X] 2017-02-19 v0.2.0.0 [Package split into regex and regex-examples](https://github.com/iconnect/regex/milestone/5) +- [ ] 2017-02-26 v0.3.0.0 [API adjustments, tutorials and examples finalized](https://github.com/iconnect/regex/milestone/2) - [ ] 2017-03-20 v1.0.0.0 [First stable release](https://github.com/iconnect/regex/milestone/3) - [ ] 2017-08-31 v2.0.0.0 [Fast text replacement with benchmarks](https://github.com/iconnect/regex/milestone/4) diff --git a/Text/RE.hs b/Text/RE.hs index 664dc15..f43bdd1 100644 --- a/Text/RE.hs +++ b/Text/RE.hs @@ -116,6 +116,7 @@ module Text.RE , expandMacros' -- * Tools -- ** Grep + , Line(..) , grep , grepLines , GrepScript diff --git a/Text/RE/Tools/Grep.lhs b/Text/RE/Tools/Grep.lhs index cf6c358..9684e9e 100644 --- a/Text/RE/Tools/Grep.lhs +++ b/Text/RE/Tools/Grep.lhs @@ -5,7 +5,8 @@ {-# LANGUAGE CPP #-} module Text.RE.Tools.Grep - ( grep + ( Line(..) + , grep , grepLines , GrepScript , grepScript diff --git a/changelog b/changelog index 9b1168a..5e377d6 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,10 @@ -*-change-log-*- -0.1.0.0 Chris Dornan 2017-02-17 +0.2.0.0 Chris Dornan 2017-02-19 + * Split off the tutorial tests and examples into regex-examples, + leaving just the library in regex + +0.1.0.0 Chris Dornan 2017-02-18 * Cabal file generated from a DRY template * Library dependencies minimised, test depndencies moved into examples/re-tests diff --git a/docs/Grep.html b/docs/Grep.html index ba7f262..a436533 100644 --- a/docs/Grep.html +++ b/docs/Grep.html @@ -72,7 +72,8 @@

Text.RE.Tools.Grep

{-# LANGUAGE CPP #-} module Text.RE.Tools.Grep - ( grep + ( Line(..) + , grep , grepLines , GrepScript , grepScript diff --git a/docs/TestKit.html b/docs/TestKit.html index acf17e3..13c91de 100644 --- a/docs/TestKit.html +++ b/docs/TestKit.html @@ -77,14 +77,18 @@

examples/TestKit.lhs

#endif module TestKit - ( Vrn + ( Vrn(..) + , presentVrn + , parseVrn , bumpVersion , substVersion , substVersion_ + , readCurrentVersion , Test , runTests , checkThis , test_pp + , include , cmp ) where @@ -106,10 +110,23 @@

Vrn and friends

data Vrn = Vrn { _vrn_a, _vrn_b, _vrn_c, _vrn_d :: Int }
   deriving (Show,Eq,Ord)
 
+presentVrn :: Vrn -> String
+presentVrn Vrn{..} = printf "%d.%d.%d.%d" _vrn_a _vrn_b _vrn_c _vrn_d
+
+parseVrn :: String -> Vrn
+parseVrn vrn_s = case matched m of
+    True  -> Vrn (p [cp|a|]) (p [cp|b|]) (p [cp|c|]) (p [cp|d|])
+    False -> error $ "not a valid version: " ++ vrn_s
+  where
+    p c  = fromMaybe oops $ parseInteger $ m !$$ c
+    m    = vrn_s ?=~ [re|^${a}(@{%nat})\.${b}(@{%nat})\.${c}(@{%nat})\.${d}(@{%nat})$|]
+
+    oops = error "parseVrn"
+
 -- | register a new version of the package
 bumpVersion :: String -> IO ()
 bumpVersion vrn_s = do
-    vrn0 <- read_current_version
+    vrn0 <- readCurrentVersion
     rex' <- compileRegex () $ printf "- \\[[xX]\\].*%d\\.%d\\.%d\\.%d" _vrn_a _vrn_b _vrn_c _vrn_d
     nada <- null . linesMatched <$> grepLines rex' "lib/md/roadmap-incl.md"
     M.when nada $
@@ -123,9 +140,9 @@ 

Vrn and friends

write_current_version vrn substVersion "lib/hackage-template.svg" "docs/badges/hackage.svg" False -> error $ - printf "version not later ~(%s > %s)" vrn_s $ present_vrn vrn0 + printf "version not later ~(%s > %s)" vrn_s $ presentVrn vrn0 where - vrn@Vrn{..} = parse_vrn vrn_s + vrn@Vrn{..} = parseVrn vrn_s substVersion :: FilePath -> FilePath -> IO () substVersion in_f out_f = @@ -133,28 +150,15 @@

Vrn and friends

substVersion_ :: (IsRegex RE a,Replace a) => a -> IO a substVersion_ txt = - flip replaceAll ms . pack_ . present_vrn <$> read_current_version + flip replaceAll ms . pack_ . presentVrn <$> readCurrentVersion where ms = txt *=~ [re|<<\$version\$>>|] -read_current_version :: IO Vrn -read_current_version = parse_vrn <$> readFile "lib/version.txt" +readCurrentVersion :: IO Vrn +readCurrentVersion = parseVrn <$> readFile "lib/version.txt" write_current_version :: Vrn -> IO () -write_current_version = writeFile "lib/version.txt" . present_vrn - -present_vrn :: Vrn -> String -present_vrn Vrn{..} = printf "%d.%d.%d.%d" _vrn_a _vrn_b _vrn_c _vrn_d - -parse_vrn :: String -> Vrn -parse_vrn vrn_s = case matched m of - True -> Vrn (p [cp|a|]) (p [cp|b|]) (p [cp|c|]) (p [cp|d|]) - False -> error $ "not a valid version: " ++ vrn_s - where - p c = fromMaybe oops $ parseInteger $ m !$$ c - m = vrn_s ?=~ [re|^${a}(@{%nat})\.${b}(@{%nat})\.${c}(@{%nat})\.${d}(@{%nat})$|] - - oops = error "parse_vrn"
+write_current_version = writeFile "lib/version.txt" . presentVrn

Test and friends

data Test =
   Test
@@ -213,6 +217,16 @@ 

Test and friends

exitWith $ ExitFailure 1 where tmp_pth = "tmp/mod.lhs"
+

simple include processor

+
include :: LBS.ByteString -> IO LBS.ByteString
+include = sed' $ Select
+    [ (,) [re|^%include ${file}(@{%string})$|] $ EDIT_fun TOP   incl
+    , (,) [re|^.*$|]                           $ EDIT_fun TOP $ \_ _ _ _->return Nothing
+    ]
+  where
+    incl _ mtch _ _ = Just <$> LBS.readFile (prs_s $ mtch !$$ [cp|file|])
+    prs_s           = maybe (error "include") T.unpack . parseString
+

cmp

cmp :: T.Text -> T.Text -> IO Bool
 cmp src dst = handle hdl $ do
     _ <- SH.shelly $ SH.verbosely $
diff --git a/docs/badges/hackage.svg b/docs/badges/hackage.svg
index 32ce39b..1231a1d 100644
--- a/docs/badges/hackage.svg
+++ b/docs/badges/hackage.svg
@@ -15,7 +15,7 @@
   
     hackage
     hackage
-    v0.1.0.0
-    v0.1.0.0
+    v0.2.0.0
+    v0.2.0.0
   
 
diff --git a/docs/changelog.html b/docs/changelog.html
index c5703d7..783f8df 100644
--- a/docs/changelog.html
+++ b/docs/changelog.html
@@ -120,7 +120,11 @@ 

-*-change-log-*-
 
-0.1.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-02-17
+0.2.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-02-19
+  * Split off the tutorial tests and examples into regex-examples,
+    leaving just the library in regex
+
+0.1.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-02-18
   * Cabal file generated from a DRY template
   * Library dependencies minimised, test depndencies moved into
     examples/re-tests
diff --git a/docs/index.html b/docs/index.html
index 6d93f17..a1c8654 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -26,6 +26,7 @@
       

See the About page for details.

+

+regex and regex-examples +

+
    +
  • the regex package contains the regex library
  • +
  • the regex-examples package contains the tutorial, tests and example programs
  • +

Road Map

@@ -113,10 +121,13 @@

2017-01-30 v0.0.0.2 Pre-release (II)
  • -2017-02-19 v0.1.0.0 Proposed core API with presentable Haddocks +2017-02-18 v0.1.0.0 Proposed core API with presentable Haddocks +
  • +
  • +2017-02-19 v0.2.0.0 Package split into regex and regex-examples
  • -2017-02-26 v0.1.1.0 Tutorials and examples finalized +2017-02-26 v0.3.0.0 API adjustments, tutorials and examples finalized
  • 2017-03-20 v1.0.0.0 First stable release diff --git a/docs/re-gen-cabals.html b/docs/re-gen-cabals.html index 08fb07f..ec911a5 100644 --- a/docs/re-gen-cabals.html +++ b/docs/re-gen-cabals.html @@ -82,7 +82,10 @@

    examples/re-gen-cabals.lhs

    import qualified Data.Map as Map import Data.Maybe import Data.Monoid +import qualified Data.Text as T +import qualified Data.Text.Encoding as TE import Prelude.Compat +import qualified Shelly as SH import System.Directory import System.Environment import System.Exit @@ -98,16 +101,21 @@

    examples/re-gen-cabals.lhs

    case as of [] -> test ["test"] -> test - ["gen"] -> gen "lib/cabal-masters/regex.cabal" "regex.cabal" + ["sdist"] -> sdist + ["gen"] -> do + gen "lib/cabal-masters/mega-regex.cabal" "lib/mega-regex.cabal" + gen "lib/cabal-masters/regex.cabal" "lib/regex.cabal" + gen "lib/cabal-masters/regex-examples.cabal" "lib/regex-examples.cabal" + establish "mega-regex" "regex" _ -> do - hPutStrLn stderr $ "usage: " ++ pn ++ " [test|gen]" + hPutStrLn stderr $ "usage: " ++ pn ++ " [test|sdist|gen]" exitWith $ ExitFailure 1 test :: IO () test = do createDirectoryIfMissing False "tmp" - gen "lib/cabal-masters/regex.cabal" "tmp/regex.cabal" - ok <- cmp "tmp/regex.cabal" "regex.cabal" + gen "lib/cabal-masters/mega-regex.cabal" "tmp/mega-regex.cabal" + ok <- cmp "tmp/mega-regex.cabal" "lib/mega-regex.cabal" case ok of True -> return () False -> exitWith $ ExitFailure 1 @@ -115,8 +123,9 @@

    examples/re-gen-cabals.lhs

    gen :: FilePath -> FilePath -> IO () gen in_f out_f = do ctx <- setup - substVersion in_f "tmp/regex-vrn.cabal" - sed (gc_script ctx) "tmp/regex-vrn.cabal" out_f + LBS.writeFile out_f =<< + sed' (gc_script ctx) =<< substVersion_ =<< include =<< + LBS.readFile in_f data Ctx = Ctx @@ -255,6 +264,58 @@

    examples/re-gen-cabals.lhs

    NoEdit -> error "adjust_le: not enough context" ReplaceWith lbs -> ReplaceWith $ f lbs Delete -> ReplaceWith $ f ""
  • +
    sdist :: IO ()
    +sdist = do
    +  sdist'    "regex"
    +  sdist'    "regex-examples"
    +  establish "mega-regex" "regex"
    +  vrn_t <- T.pack . presentVrn <$> readCurrentVersion
    +  smy_t <- summary
    +  SH.shelly $ SH.verbosely $
    +    SH.run_ "git" ["tag",vrn_t,"-m",smy_t]
    +
    +sdist' :: T.Text -> IO ()
    +sdist' nm = do
    +  establish nm nm
    +  SH.shelly $ SH.verbosely $ do
    +    SH.cp readme "README.markdown"
    +    SH.run_ "cabal" ["clean"]
    +    SH.run_ "cabal" ["configure"]
    +    SH.run_ "cabal" ["sdist"]
    +    vrn <- SH.liftIO readCurrentVersion
    +    let tb = nm<>"-"<>T.pack(presentVrn vrn)<>".tar.gz"
    +    SH.cp (SH.fromText $ "dist/"<>tb) $ SH.fromText $ "releases/"<>tb
    +  where
    +    readme = SH.fromText $ "lib/README-"<>nm<>".md"
    +
    +establish :: T.Text -> T.Text -> IO ()
    +establish nm nm' = SH.shelly $ SH.verbosely $ do
    +    SH.rm_f "mega-regex.cabal"
    +    SH.rm_f "regex.cabal"
    +    SH.rm_f "regex-examples.cabal"
    +    SH.cp (SH.fromText sf) (SH.fromText df)
    +  where
    +    sf = "lib/"<>nm<>".cabal"
    +    df = nm'<>".cabal"
    +
    +summary :: IO T.Text
    +summary = do
    +  vrn <- SH.liftIO readCurrentVersion
    +  let vrn_res = concat
    +        [ show $ _vrn_a vrn
    +        , "\\."
    +        , show $ _vrn_b vrn
    +        , "\\."
    +        , show $ _vrn_c vrn
    +        , "\\."
    +        , show $ _vrn_d vrn
    +        ]
    +  rex <- compileRegex () $ "- \\[[xX]\\] +@{%date} +v"++vrn_res++" +\\[?${smy}([^]]+)"
    +  lns <- linesMatched <$> grepLines rex "lib/md/roadmap-incl.md"
    +  case lns of
    +    [Line _ (Matches _ [mtch])] -> return $ TE.decodeUtf8 $ LBS.toStrict $ mtch !$$ [cp|smy|]
    +    _ -> error "failed to locate the summary text in the roadmap"
    +

    let vrn_res = concat [ show $ _vrn_a vrn, "\.", show $ _vrn_b vrn, "\.", show $ _vrn_c vrn, "\.", show $ _vrn_d vrn ]

    diff --git a/docs/re-include.html b/docs/re-include.html index a34acd1..d0250a0 100644 --- a/docs/re-include.html +++ b/docs/re-include.html @@ -108,15 +108,15 @@

    The Sed Script

    loop :: FilePath -> FilePath -> IO ()
     loop =
       sed $ Select
    -    [ (,) [re|^%include ${file}(@{%string}) ${rex}(@{%string})$|] $ EDIT_fun TOP   include
    +    [ (,) [re|^%include ${file}(@{%string}) ${rex}(@{%string})$|] $ EDIT_fun TOP   include_file
         , (,) [re|^.*$|]                                              $ EDIT_fun TOP $ \_ _ _ _->return Nothing
         ]
    -
    include :: LineNo
    -        -> Match LBS.ByteString
    -        -> Location
    -        -> Capture LBS.ByteString
    -        -> IO (Maybe LBS.ByteString)
    -include _ mtch _ _ = fmap Just $
    +
    include_file :: LineNo
    +             -> Match LBS.ByteString
    +             -> Location
    +             -> Capture LBS.ByteString
    +             -> IO (Maybe LBS.ByteString)
    +include_file _ mtch _ _ = fmap Just $
         extract fp =<< compileRegex () re_s
       where
         fp    = prs_s $ captureText [cp|file|] mtch
    diff --git a/docs/re-prep.html b/docs/re-prep.html
    index b055905..fbac940 100644
    --- a/docs/re-prep.html
    +++ b/docs/re-prep.html
    @@ -416,8 +416,9 @@ 

    badges

    pages

    pages :: IO ()
     pages = do
    -  prep_page   MM_hackage "lib/md/index.md" "README.markdown"
    -  prep_page   MM_github  "lib/md/index.md" "README.md"
    +  prep_page "regex"          MM_hackage "lib/md/index.md" "lib/README-regex.md"
    +  prep_page "regex-examples" MM_hackage "lib/md/index.md" "lib/README-regex-examples.md"
    +  prep_page "regex"          MM_github  "lib/md/index.md" "README.md"
       mapM_ pandoc_page [minBound..maxBound]
    data Page
       = PG_index
    @@ -461,29 +462,32 @@ 

    pages

    PG_changelog -> "Change Log"
    pandoc_page :: Page -> IO ()
     pandoc_page pg = do
    -  mt_lbs <- LBS.readFile $ page_master_file pg
    +  mt_lbs <- setup_ttl <$> LBS.readFile (page_master_file pg)
       (hdgs,md_lbs) <- prep_page' MM_pandoc mt_lbs
       LBS.writeFile "tmp/metadata.markdown"  $ LBS.unlines ["---","title: "<>page_title pg,"---"]
       LBS.writeFile "tmp/heading.markdown"   $ page_heading pg
       LBS.writeFile "tmp/page_pre_body.html" $ mk_pre_body_html pg hdgs
       LBS.writeFile "tmp/page_pst_body.html"   pst_body_html
       LBS.writeFile "tmp/page.markdown"        md_lbs
    -  fmap (const ()) $
    -    SH.shelly $ SH.verbosely $
    -      SH.run "pandoc"
    -        [ "-f", "markdown+grid_tables+autolink_bare_uris"
    -        , "-t", "html5"
    -        , "-T", "regex"
    -        , "-s"
    -        , "-H", "lib/favicons.html"
    -        , "-B", "tmp/page_pre_body.html"
    -        , "-A", "tmp/page_pst_body.html"
    -        , "-c", "lib/styles.css"
    -        , "-o", T.pack $ page_docs_file pg
    -        , "tmp/metadata.markdown"
    -        , "tmp/heading.markdown"
    -        , "tmp/page.markdown"
    -        ]
    +  SH.shelly $ SH.verbosely $
    +    SH.run_ "pandoc"
    +      [ "-f", "markdown+grid_tables+autolink_bare_uris"
    +      , "-t", "html5"
    +      , "-T", "regex"
    +      , "-s"
    +      , "-H", "lib/favicons.html"
    +      , "-B", "tmp/page_pre_body.html"
    +      , "-A", "tmp/page_pst_body.html"
    +      , "-c", "lib/styles.css"
    +      , "-o", T.pack $ page_docs_file pg
    +      , "tmp/metadata.markdown"
    +      , "tmp/heading.markdown"
    +      , "tmp/page.markdown"
    +      ]
    +  where
    +    setup_ttl = case pg of
    +      PG_index -> set_title "regex"
    +      _        -> id
     
     data Heading =
       Heading
    @@ -503,12 +507,20 @@ 

    pages

    page_heading pg = "<p class='pagebc'><a href='.' title='Home'>Home</a> &raquo; **"<>page_title pg<>"**</p>\n" -prep_page :: MarkdownMode -> FilePath -> FilePath -> IO () -prep_page mmd in_fp out_fp = do - lbs <- LBS.readFile in_fp +prep_page :: LBS.ByteString -> MarkdownMode -> FilePath -> FilePath -> IO () +prep_page ttl mmd in_fp out_fp = do + lbs <- set_title ttl <$> LBS.readFile in_fp (_,lbs') <- prep_page' mmd lbs LBS.writeFile out_fp lbs' +set_title :: LBS.ByteString -> LBS.ByteString -> LBS.ByteString +set_title ttl lbs = fromMaybe oops $ flip sed' lbs $ Pipe + [ (,) [re|<<\$title\$>>|] $ EDIT_fun TOP $ \_ _ _ _->return $ Just ttl + ] + where + -- runIdentity added to base in 4.9 only + oops = error "set_title" + prep_page' :: MarkdownMode -> LBS.ByteString -> IO ([Heading],LBS.ByteString) prep_page' mmd lbs = do rf_h <- newIORef [] @@ -733,15 +745,6 @@

    Literate Haskell Pages

    [ "https://github.com/iconnect/regex/blob/master/" , LBS.pack $ T.unpack repo_path ]
    -

    simple include processor

    -
    include :: LBS.ByteString -> IO LBS.ByteString
    -include = sed' $ Select
    -    [ (,) [re|^%include ${file}(@{%string})$|] $ EDIT_fun TOP   incl
    -    , (,) [re|^.*$|]                           $ EDIT_fun TOP $ \_ _ _ _->return Nothing
    -    ]
    -  where
    -    incl _ mtch _ _ = Just <$> LBS.readFile (prs_s $ mtch !$$ [cp|file|])
    -    prs_s           = maybe (error "include") T.unpack . parseString

    branding

    branding :: LBS.ByteString
     branding = [here|<a href="." style="Arial, 'Helvetica Neue', Helvetica, sans-serif;" id="branding">[<span style='color:red;'>re</span>|${<span style='color:red;'>gex</span>}(.*)|<span></span>]</a>|]
    diff --git a/docs/re-tutorial.html b/docs/re-tutorial.html index 61e8070..1e66426 100644 --- a/docs/re-tutorial.html +++ b/docs/re-tutorial.html @@ -708,7 +708,7 @@

    Example: include preprocessor

    loop :: FilePath -> FilePath -> IO ()
     loop =
       sed $ Select
    -    [ (,) [re|^%include ${file}(@{%string}) ${rex}(@{%string})$|] $ EDIT_fun TOP   include
    +    [ (,) [re|^%include ${file}(@{%string}) ${rex}(@{%string})$|] $ EDIT_fun TOP   include_file
         , (,) [re|^.*$|]                                              $ EDIT_fun TOP $ \_ _ _ _->return Nothing
         ]
    diff --git a/docs/roadmap.html b/docs/roadmap.html index df790e7..4ce8e78 100644 --- a/docs/roadmap.html +++ b/docs/roadmap.html @@ -89,10 +89,13 @@

    2017-01-30 v0.0.0.2 Pre-release (II)
  • -2017-02-19 v0.1.0.0 Proposed core API with presentable Haddocks +2017-02-18 v0.1.0.0 Proposed core API with presentable Haddocks
  • -2017-02-26 v0.1.1.0 Tutorials and examples finalized +2017-02-19 v0.2.0.0 Package split into regex and regex-examples +
  • +
  • +2017-02-26 v0.3.0.0 API adjustments, tutorials and examples finalized
  • 2017-03-20 v1.0.0.0 First stable release diff --git a/examples/TestKit.lhs b/examples/TestKit.lhs index e92750e..0074d73 100644 --- a/examples/TestKit.lhs +++ b/examples/TestKit.lhs @@ -10,10 +10,13 @@ #endif module TestKit - ( Vrn + ( Vrn(..) + , presentVrn + , parseVrn , bumpVersion , substVersion , substVersion_ + , readCurrentVersion , Test , runTests , checkThis @@ -46,10 +49,23 @@ Vrn and friends data Vrn = Vrn { _vrn_a, _vrn_b, _vrn_c, _vrn_d :: Int } deriving (Show,Eq,Ord) +presentVrn :: Vrn -> String +presentVrn Vrn{..} = printf "%d.%d.%d.%d" _vrn_a _vrn_b _vrn_c _vrn_d + +parseVrn :: String -> Vrn +parseVrn vrn_s = case matched m of + True -> Vrn (p [cp|a|]) (p [cp|b|]) (p [cp|c|]) (p [cp|d|]) + False -> error $ "not a valid version: " ++ vrn_s + where + p c = fromMaybe oops $ parseInteger $ m !$$ c + m = vrn_s ?=~ [re|^${a}(@{%nat})\.${b}(@{%nat})\.${c}(@{%nat})\.${d}(@{%nat})$|] + + oops = error "parseVrn" + -- | register a new version of the package bumpVersion :: String -> IO () bumpVersion vrn_s = do - vrn0 <- read_current_version + vrn0 <- readCurrentVersion rex' <- compileRegex () $ printf "- \\[[xX]\\].*%d\\.%d\\.%d\\.%d" _vrn_a _vrn_b _vrn_c _vrn_d nada <- null . linesMatched <$> grepLines rex' "lib/md/roadmap-incl.md" M.when nada $ @@ -63,9 +79,9 @@ bumpVersion vrn_s = do write_current_version vrn substVersion "lib/hackage-template.svg" "docs/badges/hackage.svg" False -> error $ - printf "version not later ~(%s > %s)" vrn_s $ present_vrn vrn0 + printf "version not later ~(%s > %s)" vrn_s $ presentVrn vrn0 where - vrn@Vrn{..} = parse_vrn vrn_s + vrn@Vrn{..} = parseVrn vrn_s substVersion :: FilePath -> FilePath -> IO () substVersion in_f out_f = @@ -73,28 +89,15 @@ substVersion in_f out_f = substVersion_ :: (IsRegex RE a,Replace a) => a -> IO a substVersion_ txt = - flip replaceAll ms . pack_ . present_vrn <$> read_current_version + flip replaceAll ms . pack_ . presentVrn <$> readCurrentVersion where ms = txt *=~ [re|<<\$version\$>>|] -read_current_version :: IO Vrn -read_current_version = parse_vrn <$> readFile "lib/version.txt" +readCurrentVersion :: IO Vrn +readCurrentVersion = parseVrn <$> readFile "lib/version.txt" write_current_version :: Vrn -> IO () -write_current_version = writeFile "lib/version.txt" . present_vrn - -present_vrn :: Vrn -> String -present_vrn Vrn{..} = printf "%d.%d.%d.%d" _vrn_a _vrn_b _vrn_c _vrn_d - -parse_vrn :: String -> Vrn -parse_vrn vrn_s = case matched m of - True -> Vrn (p [cp|a|]) (p [cp|b|]) (p [cp|c|]) (p [cp|d|]) - False -> error $ "not a valid version: " ++ vrn_s - where - p c = fromMaybe oops $ parseInteger $ m !$$ c - m = vrn_s ?=~ [re|^${a}(@{%nat})\.${b}(@{%nat})\.${c}(@{%nat})\.${d}(@{%nat})$|] - - oops = error "parse_vrn" +write_current_version = writeFile "lib/version.txt" . presentVrn \end{code} diff --git a/examples/re-gen-cabals.lhs b/examples/re-gen-cabals.lhs index fe4e0b8..ef31e4b 100644 --- a/examples/re-gen-cabals.lhs +++ b/examples/re-gen-cabals.lhs @@ -15,7 +15,10 @@ import qualified Data.List as L import qualified Data.Map as Map import Data.Maybe import Data.Monoid +import qualified Data.Text as T +import qualified Data.Text.Encoding as TE import Prelude.Compat +import qualified Shelly as SH import System.Directory import System.Environment import System.Exit @@ -31,16 +34,21 @@ main = do case as of [] -> test ["test"] -> test - ["gen"] -> gen "lib/cabal-masters/mega-regex.cabal" "mega-regex.cabal" + ["sdist"] -> sdist + ["gen"] -> do + gen "lib/cabal-masters/mega-regex.cabal" "lib/mega-regex.cabal" + gen "lib/cabal-masters/regex.cabal" "lib/regex.cabal" + gen "lib/cabal-masters/regex-examples.cabal" "lib/regex-examples.cabal" + establish "mega-regex" "regex" _ -> do - hPutStrLn stderr $ "usage: " ++ pn ++ " [test|gen]" + hPutStrLn stderr $ "usage: " ++ pn ++ " [test|sdist|gen]" exitWith $ ExitFailure 1 test :: IO () test = do createDirectoryIfMissing False "tmp" gen "lib/cabal-masters/mega-regex.cabal" "tmp/mega-regex.cabal" - ok <- cmp "tmp/mega-regex.cabal" "mega-regex.cabal" + ok <- cmp "tmp/mega-regex.cabal" "lib/mega-regex.cabal" case ok of True -> return () False -> exitWith $ ExitFailure 1 @@ -190,3 +198,60 @@ adjust_le f le = case le of ReplaceWith lbs -> ReplaceWith $ f lbs Delete -> ReplaceWith $ f "" \end{code} + +\begin{code} +sdist :: IO () +sdist = do + sdist' "regex" + sdist' "regex-examples" + establish "mega-regex" "regex" + vrn_t <- T.pack . presentVrn <$> readCurrentVersion + smy_t <- summary + SH.shelly $ SH.verbosely $ + SH.run_ "git" ["tag",vrn_t,"-m",smy_t] + +sdist' :: T.Text -> IO () +sdist' nm = do + establish nm nm + SH.shelly $ SH.verbosely $ do + SH.cp readme "README.markdown" + SH.run_ "cabal" ["clean"] + SH.run_ "cabal" ["configure"] + SH.run_ "cabal" ["sdist"] + vrn <- SH.liftIO readCurrentVersion + let tb = nm<>"-"<>T.pack(presentVrn vrn)<>".tar.gz" + SH.cp (SH.fromText $ "dist/"<>tb) $ SH.fromText $ "releases/"<>tb + where + readme = SH.fromText $ "lib/README-"<>nm<>".md" + +establish :: T.Text -> T.Text -> IO () +establish nm nm' = SH.shelly $ SH.verbosely $ do + SH.rm_f "mega-regex.cabal" + SH.rm_f "regex.cabal" + SH.rm_f "regex-examples.cabal" + SH.cp (SH.fromText sf) (SH.fromText df) + where + sf = "lib/"<>nm<>".cabal" + df = nm'<>".cabal" + +summary :: IO T.Text +summary = do + vrn <- SH.liftIO readCurrentVersion + let vrn_res = concat + [ show $ _vrn_a vrn + , "\\." + , show $ _vrn_b vrn + , "\\." + , show $ _vrn_c vrn + , "\\." + , show $ _vrn_d vrn + ] + rex <- compileRegex () $ "- \\[[xX]\\] +@{%date} +v"++vrn_res++" +\\[?${smy}([^]]+)" + lns <- linesMatched <$> grepLines rex "lib/md/roadmap-incl.md" + case lns of + [Line _ (Matches _ [mtch])] -> return $ TE.decodeUtf8 $ LBS.toStrict $ mtch !$$ [cp|smy|] + _ -> error "failed to locate the summary text in the roadmap" +\end{code} + + +let vrn_res = concat [ show $ _vrn_a vrn, "\\.", show $ _vrn_b vrn, "\\.", show $ _vrn_c vrn, "\\.", show $ _vrn_d vrn ] diff --git a/examples/re-prep.lhs b/examples/re-prep.lhs index 99a54c9..b2e37cc 100644 --- a/examples/re-prep.lhs +++ b/examples/re-prep.lhs @@ -452,8 +452,9 @@ pages \begin{code} pages :: IO () pages = do - prep_page MM_hackage "lib/md/index.md" "README.markdown" - prep_page MM_github "lib/md/index.md" "README.md" + prep_page "regex" MM_hackage "lib/md/index.md" "lib/README-regex.md" + prep_page "regex-examples" MM_hackage "lib/md/index.md" "lib/README-regex-examples.md" + prep_page "regex" MM_github "lib/md/index.md" "README.md" mapM_ pandoc_page [minBound..maxBound] \end{code} @@ -503,29 +504,32 @@ page_title pg = case pg of \begin{code} pandoc_page :: Page -> IO () pandoc_page pg = do - mt_lbs <- LBS.readFile $ page_master_file pg + mt_lbs <- setup_ttl <$> LBS.readFile (page_master_file pg) (hdgs,md_lbs) <- prep_page' MM_pandoc mt_lbs LBS.writeFile "tmp/metadata.markdown" $ LBS.unlines ["---","title: "<>page_title pg,"---"] LBS.writeFile "tmp/heading.markdown" $ page_heading pg LBS.writeFile "tmp/page_pre_body.html" $ mk_pre_body_html pg hdgs LBS.writeFile "tmp/page_pst_body.html" pst_body_html LBS.writeFile "tmp/page.markdown" md_lbs - fmap (const ()) $ - SH.shelly $ SH.verbosely $ - SH.run "pandoc" - [ "-f", "markdown+grid_tables+autolink_bare_uris" - , "-t", "html5" - , "-T", "regex" - , "-s" - , "-H", "lib/favicons.html" - , "-B", "tmp/page_pre_body.html" - , "-A", "tmp/page_pst_body.html" - , "-c", "lib/styles.css" - , "-o", T.pack $ page_docs_file pg - , "tmp/metadata.markdown" - , "tmp/heading.markdown" - , "tmp/page.markdown" - ] + SH.shelly $ SH.verbosely $ + SH.run_ "pandoc" + [ "-f", "markdown+grid_tables+autolink_bare_uris" + , "-t", "html5" + , "-T", "regex" + , "-s" + , "-H", "lib/favicons.html" + , "-B", "tmp/page_pre_body.html" + , "-A", "tmp/page_pst_body.html" + , "-c", "lib/styles.css" + , "-o", T.pack $ page_docs_file pg + , "tmp/metadata.markdown" + , "tmp/heading.markdown" + , "tmp/page.markdown" + ] + where + setup_ttl = case pg of + PG_index -> set_title "regex" + _ -> id data Heading = Heading @@ -545,12 +549,20 @@ page_heading PG_index = "" page_heading pg = "

    Home » **"<>page_title pg<>"**

    \n" -prep_page :: MarkdownMode -> FilePath -> FilePath -> IO () -prep_page mmd in_fp out_fp = do - lbs <- LBS.readFile in_fp +prep_page :: LBS.ByteString -> MarkdownMode -> FilePath -> FilePath -> IO () +prep_page ttl mmd in_fp out_fp = do + lbs <- set_title ttl <$> LBS.readFile in_fp (_,lbs') <- prep_page' mmd lbs LBS.writeFile out_fp lbs' +set_title :: LBS.ByteString -> LBS.ByteString -> LBS.ByteString +set_title ttl lbs = fromMaybe oops $ flip sed' lbs $ Pipe + [ (,) [re|<<\$title\$>>|] $ EDIT_fun TOP $ \_ _ _ _->return $ Just ttl + ] + where + -- runIdentity added to base in 4.9 only + oops = error "set_title" + prep_page' :: MarkdownMode -> LBS.ByteString -> IO ([Heading],LBS.ByteString) prep_page' mmd lbs = do rf_h <- newIORef [] diff --git a/lib/README-regex-examples.md b/lib/README-regex-examples.md new file mode 100644 index 0000000..de0c25a --- /dev/null +++ b/lib/README-regex-examples.md @@ -0,0 +1,109 @@ +# regex-examples + +Regex is a regular expression toolkit for regex-base with: + + * text-replacement operations with named captures; + * special datatypes for matches and captures; + * compile-time checking of RE syntax; + * a unified means of controlling case-sensitivity and multi-line options; + * high-level AWK-like tools for building text processing apps; + * the option of using match operators with reduced polymorphism on the + text and/or result types; + * regular expression macros including: + + a number of useful RE macros; + + a test bench for testing and documenting new macro environments; + * built-in support for the TDFA and PCRE backends; + * comprehensive documentation and copious examples. + + +See the [About page](http://about.regex.uk) for details. + + +## regex and regex-examples + + * the `regex` package contains the regex library + * the `regex-examples` package contains the tutorial, tests + and example programs + + +## Road Map + +    ☒  2017-01-26 v0.0.0.1 Pre-release (I) + +    ☒  2017-01-30 v0.0.0.2 Pre-release (II) + +    ☒  2017-02-18 v0.1.0.0 [Proposed core API with presentable Haddocks](https://github.com/iconnect/regex/milestone/1) + +    ☒  2017-02-19 v0.2.0.0 [Package split into regex and regex-examples](https://github.com/iconnect/regex/milestone/5) + +    ☐  2017-02-26 v0.3.0.0 [API adjustments, tutorials and examples finalized](https://github.com/iconnect/regex/milestone/2) + +    ☐  2017-03-20 v1.0.0.0 [First stable release](https://github.com/iconnect/regex/milestone/3) + +    ☐  2017-08-31 v2.0.0.0 [Fast text replacement with benchmarks](https://github.com/iconnect/regex/milestone/4) + + + +See the [Roadmap page](http://roadmap.regex.uk) for details. + + +## Build Status + +[![Hackage](http://regex.uk/badges/hackage.svg)](https://hackage.haskell.org/package/regex) [![BSD3 License](http://regex.uk/badges/license.svg)](https://tldrlegal.com/license/bsd-3-clause-license-%28revised%29) [![Un*x build](http://regex.uk/badges/unix-build.svg)](https://travis-ci.org/iconnect/regex) [![Windows build](http://regex.uk/badges/windows-build.svg)](https://ci.appveyor.com/project/engineerirngirisconnectcouk/regex/branch/master) [![Coverage](http://regex.uk/badges/coverage.svg)](https://coveralls.io/github/iconnect/regex?branch=master) + +See [build status page](http://regex.uk/build-status) for details. + + +## Installing the Package + +The package can be easily installed with cabal or stack on GHC-8.0, + 7.10 or 7.8 for the above platforms. See the +[Installation page](http://installation.regex.uk) for details. + + +## The Tutorial Tests and Examples + +See the [Tutorial page](http://tutorial.regex.uk) and +[Examples page](http://examples.regex.uk) for details. + + +## Helping Out + +If you have any feedback or suggestion then please drop us a line. + +    `t` [@hregex](https://twitter.com/hregex) + +    `e` maintainers@regex.uk + +    `w` http://issues.regex.uk + +The [Contact page](http://contact.regex.uk) has more details. + + +## The API + +The Haddocks can be found at http://hs.regex.uk. + + +## The Macro Tables + +The macro environments are an important part of the package and +are documented [here](http://macros.regex.uk). + + +## The regex.uk Directory + +A handy overview of the regex.uk domain can be found +[here](http://directory.regex.uk). + + +## The Changelog + +The `changelog` is posted [here](http://changelog.regex.uk). + + +## The Authors + +This library was written and is currently maintained by +[Chris Dornan](mailto:chris.dornan@irisconnect.com) aka +[@cdornan](https://twitter.com/cdornan) diff --git a/lib/README-regex.md b/lib/README-regex.md new file mode 100644 index 0000000..5c88f85 --- /dev/null +++ b/lib/README-regex.md @@ -0,0 +1,109 @@ +# regex + +Regex is a regular expression toolkit for regex-base with: + + * text-replacement operations with named captures; + * special datatypes for matches and captures; + * compile-time checking of RE syntax; + * a unified means of controlling case-sensitivity and multi-line options; + * high-level AWK-like tools for building text processing apps; + * the option of using match operators with reduced polymorphism on the + text and/or result types; + * regular expression macros including: + + a number of useful RE macros; + + a test bench for testing and documenting new macro environments; + * built-in support for the TDFA and PCRE backends; + * comprehensive documentation and copious examples. + + +See the [About page](http://about.regex.uk) for details. + + +## regex and regex-examples + + * the `regex` package contains the regex library + * the `regex-examples` package contains the tutorial, tests + and example programs + + +## Road Map + +    ☒  2017-01-26 v0.0.0.1 Pre-release (I) + +    ☒  2017-01-30 v0.0.0.2 Pre-release (II) + +    ☒  2017-02-18 v0.1.0.0 [Proposed core API with presentable Haddocks](https://github.com/iconnect/regex/milestone/1) + +    ☒  2017-02-19 v0.2.0.0 [Package split into regex and regex-examples](https://github.com/iconnect/regex/milestone/5) + +    ☐  2017-02-26 v0.3.0.0 [API adjustments, tutorials and examples finalized](https://github.com/iconnect/regex/milestone/2) + +    ☐  2017-03-20 v1.0.0.0 [First stable release](https://github.com/iconnect/regex/milestone/3) + +    ☐  2017-08-31 v2.0.0.0 [Fast text replacement with benchmarks](https://github.com/iconnect/regex/milestone/4) + + + +See the [Roadmap page](http://roadmap.regex.uk) for details. + + +## Build Status + +[![Hackage](http://regex.uk/badges/hackage.svg)](https://hackage.haskell.org/package/regex) [![BSD3 License](http://regex.uk/badges/license.svg)](https://tldrlegal.com/license/bsd-3-clause-license-%28revised%29) [![Un*x build](http://regex.uk/badges/unix-build.svg)](https://travis-ci.org/iconnect/regex) [![Windows build](http://regex.uk/badges/windows-build.svg)](https://ci.appveyor.com/project/engineerirngirisconnectcouk/regex/branch/master) [![Coverage](http://regex.uk/badges/coverage.svg)](https://coveralls.io/github/iconnect/regex?branch=master) + +See [build status page](http://regex.uk/build-status) for details. + + +## Installing the Package + +The package can be easily installed with cabal or stack on GHC-8.0, + 7.10 or 7.8 for the above platforms. See the +[Installation page](http://installation.regex.uk) for details. + + +## The Tutorial Tests and Examples + +See the [Tutorial page](http://tutorial.regex.uk) and +[Examples page](http://examples.regex.uk) for details. + + +## Helping Out + +If you have any feedback or suggestion then please drop us a line. + +    `t` [@hregex](https://twitter.com/hregex) + +    `e` maintainers@regex.uk + +    `w` http://issues.regex.uk + +The [Contact page](http://contact.regex.uk) has more details. + + +## The API + +The Haddocks can be found at http://hs.regex.uk. + + +## The Macro Tables + +The macro environments are an important part of the package and +are documented [here](http://macros.regex.uk). + + +## The regex.uk Directory + +A handy overview of the regex.uk domain can be found +[here](http://directory.regex.uk). + + +## The Changelog + +The `changelog` is posted [here](http://changelog.regex.uk). + + +## The Authors + +This library was written and is currently maintained by +[Chris Dornan](mailto:chris.dornan@irisconnect.com) aka +[@cdornan](https://twitter.com/cdornan) diff --git a/lib/cabal-masters/constraints-incl.cabal b/lib/cabal-masters/constraints-incl.cabal index 5b0a3d1..f0f54a7 100644 --- a/lib/cabal-masters/constraints-incl.cabal +++ b/lib/cabal-masters/constraints-incl.cabal @@ -1,3 +1,4 @@ +%- regex == <<$version$>> %- array >= 0.4 %- base >= 4 && < 5 %- base-compat >= 0.6.0 diff --git a/lib/cabal-masters/mega-regex.cabal b/lib/cabal-masters/mega-regex.cabal index b395a14..02ebd27 100644 --- a/lib/cabal-masters/mega-regex.cabal +++ b/lib/cabal-masters/mega-regex.cabal @@ -1,4 +1,4 @@ -Name: mega-regex +Name: regex Version: <<$version$>> Synopsis: Toolkit for regex-base Description: A Regular Expression Toolkit for regex-base with @@ -18,23 +18,7 @@ Build-type: Simple Stability: RFC bug-reports: http://issues.regex.uk -Extra-Source-Files: - README.markdown - changelog - data/access-errors.log - data/access.log - data/error.log - data/events.log - data/include-result.lhs - data/pp-result-doc.lhs - data/pp-result-gen.lhs - data/pp-test.lhs - lib/cabal-masters/regex.cabal - lib/version.txt - src/Text/RE/TDFA/ByteString/Lazy.hs - docs/pcre-nginx-log-processor.txt - docs/tdfa-macros.txt - docs/pcre-macros.txt +%include "lib/cabal-masters/test-extra-source-files-incl.cabal" Cabal-Version: >= 1.16 diff --git a/lib/cabal-masters/src b/lib/cabal-masters/src deleted file mode 120000 index e831038..0000000 --- a/lib/cabal-masters/src +++ /dev/null @@ -1 +0,0 @@ -src \ No newline at end of file diff --git a/lib/cabal-masters/test-extra-source-files-incl.cabal b/lib/cabal-masters/test-extra-source-files-incl.cabal index ddafe66..cdd080b 100644 --- a/lib/cabal-masters/test-extra-source-files-incl.cabal +++ b/lib/cabal-masters/test-extra-source-files-incl.cabal @@ -9,9 +9,25 @@ Extra-Source-Files: data/pp-result-doc.lhs data/pp-result-gen.lhs data/pp-test.lhs + lib/cabal-masters/constraints-incl.cabal + lib/cabal-masters/executables-incl.cabal + lib/cabal-masters/library-incl.cabal + lib/cabal-masters/mega-regex.cabal lib/cabal-masters/regex.cabal + lib/cabal-masters/regex-examples.cabal + lib/cabal-masters/test-extra-source-files-incl.cabal + lib/mega-regex.cabal lib/version.txt - src/Text/RE/TDFA/ByteString/Lazy.hs docs/pcre-nginx-log-processor.txt docs/tdfa-macros.txt docs/pcre-macros.txt + src/Text/RE/PCRE/ByteString.hs + src/Text/RE/PCRE/ByteString/Lazy.hs + src/Text/RE/PCRE/Sequence.hs + src/Text/RE/PCRE/String.hs + src/Text/RE/TDFA/ByteString.hs + src/Text/RE/TDFA/ByteString/Lazy.hs + src/Text/RE/TDFA/Sequence.hs + src/Text/RE/TDFA/String.hs + src/Text/RE/TDFA/Text.hs + src/Text/RE/TDFA/Text/Lazy.hs diff --git a/lib/md/index.md b/lib/md/index.md index 47c68bb..ca229df 100644 --- a/lib/md/index.md +++ b/lib/md/index.md @@ -1,10 +1,17 @@ -# regex +# <<$title$>> %include "lib/md/summary-incl.md" See the [About page](http://about.regex.uk) for details. +%heading#twopackages regex and regex-examples + + * the `regex` package contains the regex library + * the `regex-examples` package contains the tutorial, tests + and example programs + + %heading#roadmap Road Map %include "lib/md/roadmap-incl.md" diff --git a/lib/md/roadmap-incl.md b/lib/md/roadmap-incl.md index 444a55f..6906af2 100644 --- a/lib/md/roadmap-incl.md +++ b/lib/md/roadmap-incl.md @@ -1,6 +1,7 @@ - [X] 2017-01-26 v0.0.0.1 Pre-release (I) - [X] 2017-01-30 v0.0.0.2 Pre-release (II) -- [X] 2017-02-19 v0.1.0.0 [Proposed core API with presentable Haddocks](https://github.com/iconnect/regex/milestone/1) -- [ ] 2017-02-26 v0.1.1.0 [Tutorials and examples finalized](https://github.com/iconnect/regex/milestone/2) +- [X] 2017-02-18 v0.1.0.0 [Proposed core API with presentable Haddocks](https://github.com/iconnect/regex/milestone/1) +- [X] 2017-02-19 v0.2.0.0 [Package split into regex and regex-examples](https://github.com/iconnect/regex/milestone/5) +- [ ] 2017-02-26 v0.3.0.0 [API adjustments, tutorials and examples finalized](https://github.com/iconnect/regex/milestone/2) - [ ] 2017-03-20 v1.0.0.0 [First stable release](https://github.com/iconnect/regex/milestone/3) - [ ] 2017-08-31 v2.0.0.0 [Fast text replacement with benchmarks](https://github.com/iconnect/regex/milestone/4) diff --git a/mega-regex.cabal b/lib/mega-regex.cabal similarity index 92% rename from mega-regex.cabal rename to lib/mega-regex.cabal index 9b5fde2..5e54617 100644 --- a/mega-regex.cabal +++ b/lib/mega-regex.cabal @@ -1,5 +1,5 @@ -Name: mega-regex -Version: 0.1.0.0 +Name: regex +Version: 0.2.0.0 Synopsis: Toolkit for regex-base Description: A Regular Expression Toolkit for regex-base with Compile-time checking of RE syntax, data types for @@ -29,12 +29,29 @@ Extra-Source-Files: data/pp-result-doc.lhs data/pp-result-gen.lhs data/pp-test.lhs + lib/cabal-masters/constraints-incl.cabal + lib/cabal-masters/executables-incl.cabal + lib/cabal-masters/library-incl.cabal + lib/cabal-masters/mega-regex.cabal lib/cabal-masters/regex.cabal + lib/cabal-masters/regex-examples.cabal + lib/cabal-masters/test-extra-source-files-incl.cabal + lib/mega-regex.cabal lib/version.txt - src/Text/RE/TDFA/ByteString/Lazy.hs docs/pcre-nginx-log-processor.txt docs/tdfa-macros.txt docs/pcre-macros.txt + src/Text/RE/PCRE/ByteString.hs + src/Text/RE/PCRE/ByteString/Lazy.hs + src/Text/RE/PCRE/Sequence.hs + src/Text/RE/PCRE/String.hs + src/Text/RE/TDFA/ByteString.hs + src/Text/RE/TDFA/ByteString/Lazy.hs + src/Text/RE/TDFA/Sequence.hs + src/Text/RE/TDFA/String.hs + src/Text/RE/TDFA/Text.hs + src/Text/RE/TDFA/Text/Lazy.hs + Cabal-Version: >= 1.16 @@ -45,7 +62,7 @@ Source-Repository head Source-Repository this Type: git Location: https://github.com/iconnect/regex.git - Tag: 0.1.0.0 + Tag: 0.2.0.0 @@ -126,7 +143,7 @@ Executable re-gen-cabals -fwarn-tabs Build-depends: - regex + regex == 0.2.0.0 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -154,7 +171,7 @@ Test-Suite re-gen-cabals-test -fwarn-tabs Build-depends: - regex + regex == 0.2.0.0 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -179,7 +196,7 @@ Executable re-gen-modules -fwarn-tabs Build-depends: - regex + regex == 0.2.0.0 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -203,7 +220,7 @@ Test-Suite re-gen-modules-test -fwarn-tabs Build-depends: - regex + regex == 0.2.0.0 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -230,7 +247,7 @@ Executable re-include TestKit Build-depends: - regex + regex == 0.2.0.0 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -254,7 +271,7 @@ Test-Suite re-include-test TestKit Build-depends: - regex + regex == 0.2.0.0 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -275,7 +292,7 @@ Executable re-nginx-log-processor -fwarn-tabs Build-depends: - regex + regex == 0.2.0.0 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -303,7 +320,7 @@ Test-Suite re-nginx-log-processor-test -fwarn-tabs Build-depends: - regex + regex == 0.2.0.0 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -334,7 +351,7 @@ Executable re-prep TestKit Build-depends: - regex + regex == 0.2.0.0 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -360,7 +377,7 @@ Test-Suite re-prep-test TestKit Build-depends: - regex + regex == 0.2.0.0 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -386,7 +403,7 @@ Executable re-tests TestKit Build-depends: - regex + regex == 0.2.0.0 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -422,7 +439,7 @@ Test-Suite re-tests-test TestKit Build-depends: - regex + regex == 0.2.0.0 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -459,7 +476,7 @@ Executable re-tutorial -fwarn-tabs Build-depends: - regex + regex == 0.2.0.0 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -501,7 +518,7 @@ Test-Suite re-tutorial-test -fwarn-tabs Build-depends: - regex + regex == 0.2.0.0 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -545,7 +562,7 @@ Test-Suite re-tutorial-os-test -fwarn-tabs Build-depends: - regex + regex == 0.2.0.0 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 diff --git a/lib/regex-examples.cabal b/lib/regex-examples.cabal new file mode 100644 index 0000000..5d9a969 --- /dev/null +++ b/lib/regex-examples.cabal @@ -0,0 +1,593 @@ +Name: regex-examples +Version: 0.2.0.0 +Synopsis: Tutorial, tests and example programs for regex +Description: Tutorial, tests and example programs for regex, + a Regular Expression Toolkit for regex-base with + Compile-time checking of RE syntax, data types for + matches and captures, a text replacement toolkit, + portable options, high-level AWK-like tools + for building text processing apps, regular expression + macros and test bench, a tutorial and copious examples. +Homepage: http://regex.uk +Author: Chris Dornan +License: BSD3 +license-file: LICENSE +Maintainer: Chris Dornan +Copyright: Chris Dornan 2016-2017 +Category: Text +Build-type: Simple +Stability: RFC +bug-reports: http://issues.regex.uk + +Extra-Source-Files: + README.markdown + changelog + data/access-errors.log + data/access.log + data/error.log + data/events.log + data/include-result.lhs + data/pp-result-doc.lhs + data/pp-result-gen.lhs + data/pp-test.lhs + lib/cabal-masters/constraints-incl.cabal + lib/cabal-masters/executables-incl.cabal + lib/cabal-masters/library-incl.cabal + lib/cabal-masters/mega-regex.cabal + lib/cabal-masters/regex.cabal + lib/cabal-masters/regex-examples.cabal + lib/cabal-masters/test-extra-source-files-incl.cabal + lib/mega-regex.cabal + lib/version.txt + docs/pcre-nginx-log-processor.txt + docs/tdfa-macros.txt + docs/pcre-macros.txt + src/Text/RE/PCRE/ByteString.hs + src/Text/RE/PCRE/ByteString/Lazy.hs + src/Text/RE/PCRE/Sequence.hs + src/Text/RE/PCRE/String.hs + src/Text/RE/TDFA/ByteString.hs + src/Text/RE/TDFA/ByteString/Lazy.hs + src/Text/RE/TDFA/Sequence.hs + src/Text/RE/TDFA/String.hs + src/Text/RE/TDFA/Text.hs + src/Text/RE/TDFA/Text/Lazy.hs + + +Cabal-Version: >= 1.16 + +Source-Repository head + type: git + location: https://github.com/iconnect/regex.git + +Source-Repository this + Type: git + Location: https://github.com/iconnect/regex.git + Tag: 0.2.0.0 + + + +Library + Hs-Source-Dirs: . + Exposed-Modules: + Text.RE + Text.RE.Capture + Text.RE.CaptureID + Text.RE.Edit + Text.RE.Internal.NamedCaptures + Text.RE.Internal.PreludeMacros + Text.RE.Internal.QQ + Text.RE.IsRegex + Text.RE.LineNo + Text.RE.Options + Text.RE.Parsers + Text.RE.PCRE + Text.RE.PCRE.ByteString + Text.RE.PCRE.ByteString.Lazy + Text.RE.PCRE.RE + Text.RE.PCRE.Sequence + Text.RE.PCRE.String + Text.RE.Replace + Text.RE.TDFA + Text.RE.TDFA.ByteString + Text.RE.TDFA.ByteString.Lazy + Text.RE.TDFA.RE + Text.RE.TDFA.Sequence + Text.RE.TDFA.String + Text.RE.TDFA.Text + Text.RE.TDFA.Text.Lazy + Text.RE.TestBench + Text.RE.Tools.Grep + Text.RE.Tools.Lex + Text.RE.Tools.Sed + + Other-Modules: + Text.RE.Internal.AddCaptureNames + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , hashable >= 1.2.3.3 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + + +Executable re-gen-cabals + Hs-Source-Dirs: examples + + Main-Is: re-gen-cabals.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + +Test-Suite re-gen-cabals-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-gen-cabals.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + + +Executable re-gen-modules + Hs-Source-Dirs: examples + + Main-Is: re-gen-modules.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + +Test-Suite re-gen-modules-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-gen-modules.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + + +Executable re-include + Hs-Source-Dirs: examples + + Main-Is: re-include.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + +Test-Suite re-include-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-include.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + + +Executable re-nginx-log-processor + Hs-Source-Dirs: examples + + Main-Is: re-nginx-log-processor.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + +Test-Suite re-nginx-log-processor-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-nginx-log-processor.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + + +Executable re-prep + Hs-Source-Dirs: examples + + Main-Is: re-prep.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , heredoc >= 0.2.0.0 + , http-conduit >= 2.1.7.2 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + +Test-Suite re-prep-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-prep.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , heredoc >= 0.2.0.0 + , http-conduit >= 2.1.7.2 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + + +Executable re-tests + Hs-Source-Dirs: examples + + Main-Is: re-tests.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , smallcheck >= 1.1.1 + , tasty >= 0.10.1.2 + , tasty-hunit >= 0.9.2 + , tasty-smallcheck >= 0.8.0.1 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , unordered-containers >= 0.2.5.1 + + +Test-Suite re-tests-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-tests.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , smallcheck >= 1.1.1 + , tasty >= 0.10.1.2 + , tasty-hunit >= 0.9.2 + , tasty-smallcheck >= 0.8.0.1 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , unordered-containers >= 0.2.5.1 + + + +Executable re-tutorial + Hs-Source-Dirs: examples + + Main-Is: re-tutorial.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + Default-Extensions: QuasiQuotes + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , hashable >= 1.2.3.3 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , shelly >= 1.6.1.2 + , smallcheck >= 1.1.1 + , tasty >= 0.10.1.2 + , tasty-hunit >= 0.9.2 + , tasty-smallcheck >= 0.8.0.1 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + +Test-Suite re-tutorial-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-tutorial.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + Default-Extensions: QuasiQuotes + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , hashable >= 1.2.3.3 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , shelly >= 1.6.1.2 + , smallcheck >= 1.1.1 + , tasty >= 0.10.1.2 + , tasty-hunit >= 0.9.2 + , tasty-smallcheck >= 0.8.0.1 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + + +Test-Suite re-tutorial-os-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-tutorial.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + Extensions: OverloadedStrings + Default-Extensions: QuasiQuotes + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , hashable >= 1.2.3.3 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , shelly >= 1.6.1.2 + , smallcheck >= 1.1.1 + , tasty >= 0.10.1.2 + , tasty-hunit >= 0.9.2 + , tasty-smallcheck >= 0.8.0.1 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + + +-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals diff --git a/lib/regex.cabal b/lib/regex.cabal new file mode 100644 index 0000000..0fdb7d6 --- /dev/null +++ b/lib/regex.cabal @@ -0,0 +1,101 @@ +Name: regex +Version: 0.2.0.0 +Synopsis: Toolkit for regex-base +Description: A Regular Expression Toolkit for regex-base with + Compile-time checking of RE syntax, data types for + matches and captures, a text replacement toolkit, + portable options, high-level AWK-like tools + for building text processing apps, regular expression + macros and test bench, a tutorial and copious examples. +Homepage: http://regex.uk +Author: Chris Dornan +License: BSD3 +license-file: LICENSE +Maintainer: Chris Dornan +Copyright: Chris Dornan 2016-2017 +Category: Text +Build-type: Simple +Stability: RFC +bug-reports: http://issues.regex.uk + +Extra-Source-Files: + README.markdown + changelog + +Cabal-Version: >= 1.16 + +Source-Repository head + type: git + location: https://github.com/iconnect/regex.git + +Source-Repository this + Type: git + Location: https://github.com/iconnect/regex.git + Tag: 0.2.0.0 + + + +Library + Hs-Source-Dirs: . + Exposed-Modules: + Text.RE + Text.RE.Capture + Text.RE.CaptureID + Text.RE.Edit + Text.RE.Internal.NamedCaptures + Text.RE.Internal.PreludeMacros + Text.RE.Internal.QQ + Text.RE.IsRegex + Text.RE.LineNo + Text.RE.Options + Text.RE.Parsers + Text.RE.PCRE + Text.RE.PCRE.ByteString + Text.RE.PCRE.ByteString.Lazy + Text.RE.PCRE.RE + Text.RE.PCRE.Sequence + Text.RE.PCRE.String + Text.RE.Replace + Text.RE.TDFA + Text.RE.TDFA.ByteString + Text.RE.TDFA.ByteString.Lazy + Text.RE.TDFA.RE + Text.RE.TDFA.Sequence + Text.RE.TDFA.String + Text.RE.TDFA.Text + Text.RE.TDFA.Text.Lazy + Text.RE.TestBench + Text.RE.Tools.Grep + Text.RE.Tools.Lex + Text.RE.Tools.Sed + + Other-Modules: + Text.RE.Internal.AddCaptureNames + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , hashable >= 1.2.3.3 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + + +-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals diff --git a/lib/version.txt b/lib/version.txt index 726017f..2dd5492 100644 --- a/lib/version.txt +++ b/lib/version.txt @@ -1 +1 @@ -0.1.0.0 \ No newline at end of file +0.2.0.0 \ No newline at end of file diff --git a/regex.cabal b/regex.cabal new file mode 100644 index 0000000..5e54617 --- /dev/null +++ b/regex.cabal @@ -0,0 +1,592 @@ +Name: regex +Version: 0.2.0.0 +Synopsis: Toolkit for regex-base +Description: A Regular Expression Toolkit for regex-base with + Compile-time checking of RE syntax, data types for + matches and captures, a text replacement toolkit, + portable options, high-level AWK-like tools + for building text processing apps, regular expression + macros and test bench, a tutorial and copious examples. +Homepage: http://regex.uk +Author: Chris Dornan +License: BSD3 +license-file: LICENSE +Maintainer: Chris Dornan +Copyright: Chris Dornan 2016-2017 +Category: Text +Build-type: Simple +Stability: RFC +bug-reports: http://issues.regex.uk + +Extra-Source-Files: + README.markdown + changelog + data/access-errors.log + data/access.log + data/error.log + data/events.log + data/include-result.lhs + data/pp-result-doc.lhs + data/pp-result-gen.lhs + data/pp-test.lhs + lib/cabal-masters/constraints-incl.cabal + lib/cabal-masters/executables-incl.cabal + lib/cabal-masters/library-incl.cabal + lib/cabal-masters/mega-regex.cabal + lib/cabal-masters/regex.cabal + lib/cabal-masters/regex-examples.cabal + lib/cabal-masters/test-extra-source-files-incl.cabal + lib/mega-regex.cabal + lib/version.txt + docs/pcre-nginx-log-processor.txt + docs/tdfa-macros.txt + docs/pcre-macros.txt + src/Text/RE/PCRE/ByteString.hs + src/Text/RE/PCRE/ByteString/Lazy.hs + src/Text/RE/PCRE/Sequence.hs + src/Text/RE/PCRE/String.hs + src/Text/RE/TDFA/ByteString.hs + src/Text/RE/TDFA/ByteString/Lazy.hs + src/Text/RE/TDFA/Sequence.hs + src/Text/RE/TDFA/String.hs + src/Text/RE/TDFA/Text.hs + src/Text/RE/TDFA/Text/Lazy.hs + + +Cabal-Version: >= 1.16 + +Source-Repository head + type: git + location: https://github.com/iconnect/regex.git + +Source-Repository this + Type: git + Location: https://github.com/iconnect/regex.git + Tag: 0.2.0.0 + + + +Library + Hs-Source-Dirs: . + Exposed-Modules: + Text.RE + Text.RE.Capture + Text.RE.CaptureID + Text.RE.Edit + Text.RE.Internal.NamedCaptures + Text.RE.Internal.PreludeMacros + Text.RE.Internal.QQ + Text.RE.IsRegex + Text.RE.LineNo + Text.RE.Options + Text.RE.Parsers + Text.RE.PCRE + Text.RE.PCRE.ByteString + Text.RE.PCRE.ByteString.Lazy + Text.RE.PCRE.RE + Text.RE.PCRE.Sequence + Text.RE.PCRE.String + Text.RE.Replace + Text.RE.TDFA + Text.RE.TDFA.ByteString + Text.RE.TDFA.ByteString.Lazy + Text.RE.TDFA.RE + Text.RE.TDFA.Sequence + Text.RE.TDFA.String + Text.RE.TDFA.Text + Text.RE.TDFA.Text.Lazy + Text.RE.TestBench + Text.RE.Tools.Grep + Text.RE.Tools.Lex + Text.RE.Tools.Sed + + Other-Modules: + Text.RE.Internal.AddCaptureNames + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , hashable >= 1.2.3.3 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + + +Executable re-gen-cabals + Hs-Source-Dirs: examples + + Main-Is: re-gen-cabals.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + +Test-Suite re-gen-cabals-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-gen-cabals.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + + +Executable re-gen-modules + Hs-Source-Dirs: examples + + Main-Is: re-gen-modules.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + +Test-Suite re-gen-modules-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-gen-modules.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + + +Executable re-include + Hs-Source-Dirs: examples + + Main-Is: re-include.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + +Test-Suite re-include-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-include.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + + +Executable re-nginx-log-processor + Hs-Source-Dirs: examples + + Main-Is: re-nginx-log-processor.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + +Test-Suite re-nginx-log-processor-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-nginx-log-processor.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , regex-base >= 0.93.2 + , regex-tdfa >= 1.2.0 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + + +Executable re-prep + Hs-Source-Dirs: examples + + Main-Is: re-prep.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , heredoc >= 0.2.0.0 + , http-conduit >= 2.1.7.2 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + +Test-Suite re-prep-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-prep.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , directory >= 1.2.1.0 + , heredoc >= 0.2.0.0 + , http-conduit >= 2.1.7.2 + , shelly >= 1.6.1.2 + , text >= 1.2.0.6 + + + +Executable re-tests + Hs-Source-Dirs: examples + + Main-Is: re-tests.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , smallcheck >= 1.1.1 + , tasty >= 0.10.1.2 + , tasty-hunit >= 0.9.2 + , tasty-smallcheck >= 0.8.0.1 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , unordered-containers >= 0.2.5.1 + + +Test-Suite re-tests-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-tests.lhs + + Default-Language: Haskell2010 + GHC-Options: + -Wall + -fwarn-tabs + + Other-Modules: + TestKit + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , smallcheck >= 1.1.1 + , tasty >= 0.10.1.2 + , tasty-hunit >= 0.9.2 + , tasty-smallcheck >= 0.8.0.1 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , unordered-containers >= 0.2.5.1 + + + +Executable re-tutorial + Hs-Source-Dirs: examples + + Main-Is: re-tutorial.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + Default-Extensions: QuasiQuotes + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , hashable >= 1.2.3.3 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , shelly >= 1.6.1.2 + , smallcheck >= 1.1.1 + , tasty >= 0.10.1.2 + , tasty-hunit >= 0.9.2 + , tasty-smallcheck >= 0.8.0.1 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + +Test-Suite re-tutorial-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-tutorial.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + Default-Extensions: QuasiQuotes + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , hashable >= 1.2.3.3 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , shelly >= 1.6.1.2 + , smallcheck >= 1.1.1 + , tasty >= 0.10.1.2 + , tasty-hunit >= 0.9.2 + , tasty-smallcheck >= 0.8.0.1 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + + +Test-Suite re-tutorial-os-test + type: exitcode-stdio-1.0 + Hs-Source-Dirs: examples + + Main-Is: re-tutorial.lhs + + Other-Modules: + TestKit + + Default-Language: Haskell2010 + Extensions: OverloadedStrings + Default-Extensions: QuasiQuotes + GHC-Options: + -Wall + -fwarn-tabs + + Build-depends: + regex == 0.2.0.0 + , array >= 0.4 + , base >= 4 && < 5 + , base-compat >= 0.6.0 + , bytestring >= 0.10.2.0 + , containers >= 0.4 + , directory >= 1.2.1.0 + , hashable >= 1.2.3.3 + , heredoc >= 0.2.0.0 + , regex-base >= 0.93.2 + , regex-pcre-builtin >= 0.94.4.8.8.35 + , regex-tdfa >= 1.2.0 + , regex-tdfa-text >= 1.0.0.3 + , shelly >= 1.6.1.2 + , smallcheck >= 1.1.1 + , tasty >= 0.10.1.2 + , tasty-hunit >= 0.9.2 + , tasty-smallcheck >= 0.8.0.1 + , template-haskell >= 2.7 + , text >= 1.2.0.6 + , time >= 1.4.2 + , time-locale-compat >= 0.1.0.1 + , transformers >= 0.2.2 + , unordered-containers >= 0.2.5.1 + + + +-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals From 40d29bc2495fa9c5445ba65e5a7c3bc48d7bf58c Mon Sep 17 00:00:00 2001 From: Chris Dornan Date: Mon, 20 Feb 2017 01:51:08 +0000 Subject: [PATCH 3/5] Hackage release tarballs 0.2.0.0 --- releases/regex-0.2.0.0.tar.gz | Bin 0 -> 28655 bytes releases/regex-examples-0.2.0.0.tar.gz | Bin 0 -> 91466 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 releases/regex-0.2.0.0.tar.gz create mode 100644 releases/regex-examples-0.2.0.0.tar.gz diff --git a/releases/regex-0.2.0.0.tar.gz b/releases/regex-0.2.0.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..7249df63b8fdb05b6422a61b10474cc66596e3eb GIT binary patch literal 28655 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 SG^HtLUj7Hd!Kk$WmI46Us1ybO literal 0 HcmV?d00001 diff --git a/releases/regex-examples-0.2.0.0.tar.gz b/releases/regex-examples-0.2.0.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..be52a553b18215b1817e825a627fa0b5d64ff5a7 GIT binary patch literal 91466 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�)7#`!rGv#3mh4Yf{DkEkCg zbf)=fD0EM>9|6s|# z!TN#>@i)^*6H+$xC}s2>h*|m$?j*BEQmAD>M5h$hSm=|_(TrrQtc){OX`#3j9$amZ zpWt$Bb1`KNV%}8oL<(ej4M+nPCB*lyS#+#lQ@ z+#lQ@+#lQ@+#lQ@+#lQ@{KFpPH@L);?=AmfIE&~FHF<&y5fy>1|6RMirL5iFGH82C zBXvnyqxrZJP4YCQhlS0HOB;!3h-=SIDhaOH5SJDd;;EXb)I{?HzNkt~HR_$nT#GTL0-3O^PL^U=^co$8UcE}TDeW02k?LI`vOCqak zWq?W~Hq~`EjTV3|2MN1ov>QXLoY86x#dtcSEo9k441xNDb;TnfAW}opD~&*v8`2hA zk&Hu8a2H2*9ej2}p2^Ngf|f!jNsCCdI%D5G(d)9AT{-XoBNnmU-Q7JX2(Fg&8qsTt z8jIRUg`zet(9If;De9?=Cggmj2q%Mk*Z%n*o1LjeR!6Nkpb&p`?lR3-9EePOT&+CUmKr@(uqAjv3)P7jVwPL+Wxel zzKBwIX}Rvpfj11V-TT6#3bMJDBuOq%O`DniqbYX_^tc$|Ld^ZWbw8UErn40{a~iZp zkaE`v?FgHSzFmSORjDRQweh5Hbvxtk$KXb}?O)&c!%n!oMtK?&*H(+5(|#Z$iwK&e zK^9RFypQt7w%F}UqAN|V2YqLdkTE367>q}J{M9ZWvRU`)L>$x62AAA_}+@OE&k4@vQO@1j#UqAKj5D!D3 z=Q_jjq}CsfkJkW0SkHL|Fhmv+%;f%=*YUd6pc918pY;aALAO^F7@pN~1veU^+#qHa z!F5q)R;$@JUavRlD0kA>{@~ibn6g)f;0jx&ok4I#)@X727>3uq@dxF@zz;?t`5@Vo zM-$wb2~NZPNO0_xkLVmz1((1^3=)~jP#jDG*S-Jvq2C=V9~4UsK0dYJ&`43Cb-mIv zqu{1$$TA9UUQ4Rj3CZ2qw7Y@i8TW8y!GbS!GD&l~HfS&3%3>)&6{1U#k8#4DeDlG- z4c$q*-RsJOpdCDck9pq1mgmyUg1*_|f9H{Sx zeZh7eI2qVoxIwU;aWL?@LTC?0aI-V)I9;a;tqx%v3a-_LJKf!a-Cns zR$cf?EuyC2p`EcivJkfbF3#yVme92W+sCs5&qXmTRFDJe2qL|X z2lWHAgA*`41v4AjN+5)IXAhuSe=kU;Wc*od2yfoJx;lINud8ujU%mF7TR`@meSg(+ zT>I$o_!yo9tx>D3dbR4$W z`>sstGBA*kq?x)5W3R3>b>Vv7d3EXgxGO2q`H+DG*X>eA7=M7q7?zA$D| zm)Ve2>{_0w%iISNY3fqJea#v{nknyVM!vcvCF+q_ur7Vy-<7N`It52rs2TT#F;!hA zZVW!BE_tu66m>x(2qKC(SHJgN3F?A2qk?lB)V=S@pe|X$HY3!G%3NQ)vhR^tQrDmM zuMJf>;d1^w&5DEgwY5o6a)0io8~n(#doh@6sIJ{F_vl#j(eQv&k0F zgeaBR#DxoZlg+y;4S3Z?(^ZCx1BgX$lUp7dS(#s|6DPSnQx{2Yk#T#onylbAm`~03!+n&md-240tIiscHI^5d&hH-NnaIOiLUo`)tMLgc*Te*pZ)E9H~ zy^qXcoDciC`VC|GZ6c|?_*+B*-DH2w=AYp*m61N5tBka`)kHdbrUKEh_1CwIru;(v z-)}Gt#u#jvpLMFDgbVo#Pyo_dn<)6Nn57JpfyDI93%vc?#=C!D<_{40%`>EU*YENE zpWhFMOfyo%nY}%z@p<#8F{c@QHQ0O$Z5SEol{S1BKcNo(3|N~;`z`fdP=k)7^BS{` zRx2W{Zhnah`V1_h$u6b@>uUS-2Q-MHh^upelYU3GeI%*IUoDi@z^r53)@Z+2Y%w`x zu0Csad#tcGTWG(z1SZKLPvu-Hok_S^iNakDTIWppt#gGD#Uri!DdlsFu3^l?^wnBht(KJy?>_u%+8-1j{=j-FWp@) zPfy9O%xAP(L$+OoM6=@Ss0P)KkiGxt6O9$GQ}JhZ;_MW!mRJRXmB~3}#2@BEk;Z7B zib7-?ARrL5PU^2sEcX}RMpe3sZ1!x+k*4$!tA`w-E)Z3$BkDaCmNT|%1&u9QEI7g1 z2pumiO{eeCbK@ogXQ=hg7&moz`4Vd<++v{l9Tv3HPuM;+t=4O{l}6EaMGz@T%aK!M z5hj9QFd^bFTG8$&>c1}84m&d2UjY0=I0Qd%A+em1G#KIg}c`|DCcL}k6qtgNV+Rm^9M@#g;n+b1>AceYB(82$^}RP2Mx1+I;_&UFIOC%JytPkdjk;IoZzW^e5AO-eDr7FnD& zaA*fkRJo{mn09XC$9GE6+fBJ#N^@3%ArgIdNeu=Siy##0-a!<4k;Me9& z7hYJB5!xIL+~mV+S9YRIb*B58YVR0Pj&eOS6sPc6i_MFJKts7LBk??nnaq9kNm}M= z|7bRywL?V26RJz~cE^Q=uUk79^AJ6IHD_!)O*69ZYo=1ER6z};u&4Z>s*zWGVvw91 zQ&(hOqws_S*Q_!d`L9YS_T|fUVcnMUNJSTG1q=hNJ|CO?mFDT@gRrialx#GB3ixU7 zouDxxJ0E#N85Fx0+L|y~;NeaZ8F{geHllwr^Mqw5``c@(?~hYxV&IZBQ zAUV{GP5!CNK)vzuycchU*RPT~FgPwsJ}XK-=lEx>`gb#5>=2D%@w(2++O&{kw((;fG^>9J8VsLXBZ>wVkAk0%FJl{ z<#>Wo&_z@`KT?RE)+CQ*?o8ke02dxa28G#g9qE@j!4}C4)qs*bB=0~5Y zySHp8r-OmuYhPn6iJ3%sq$$g|jhnlqWkGq5WnA|SklNF>!`*ue!fB)%=7#y4gh~+T z1lkJ3YS2;*iZh;^KNue?CzsmLL||d&eGPwtiFGS|gIIBU4%Ao@73Rv!Ss#PYtp+Vj z(Il%MyHN0_g1#+v6Y1>XhWrm$jy)V&XBBeq`PJYRSXQBN~d*00tHbF3Y? zS1Fln=(|4Ej-vLb8F(tHvpX&2Mbm}l4j>CHtx$?Ounjd*s3JaKs-ISPtOm`do}EWneC6s6BAXU zESiF+OQhDLe`}9M;|YisrmIJ9Q&fFAhxoOS!oU;o?QXX?M~xgOM$H~hMQ zU}jL;k|mz#H*G~1@DKq4d%6g6C(2$292hq+4N`#q!5lf-+&NeSCa+K@NP_TjGkjg* zbC4^j7OtDT%Z-X3lZs|;wK05!?XXFn_Zp-A)FGLgkw>@RdPXEZ6 z$VT{4MNUIk&`qhpbRCc}gTggP^-li5H)veAkDzGGOM7Y3uk-_vU6o6(`EAUukx3+M zwZA!WDzpUDP?*ml>LA!dfs~${4k&v#Bu3=;r}Qe-p|3n6p!0ynO!U;DkIs)`(?G~i zfPEY8s*?usXoBwyj+@#$Rb4{y=+Nec3@YRR95Pa}!i<(B5 z9yl?ZOWmGOy36k+1ZTPNlE1hI%LZl9Ux!!KVPnyZT6Z!KJqEt_)AS|{=1lWR=2Ajc zf&?ImZ#O@il<8rJGNi4tA4!R&5)UtyWNw^RlRmqnk6I+4y}UImLtwdCfK#N@6&i}_ z+cb51iPn)%J&!CrgF1@(J7A+IXzgE>s-dcDZ_-O`m#Vafn`m$k?)os8xroX;s^!V6 zduQH6_Kr_V4;6@g>hfdujT?j&CVchtdWrOxDwd7fO{59aqF!)o5}P%)B@z;ytsWT{ zY5cu^wXI{(3ri1asLU2AX%JqhYL%(dvR3tOk3r*?U6v`q^^B3!!)6Z&VrtY=NUZXi zin$0fb|eC2l~$HG)ckHqQ0*I@gOZkN!I|ziZTI;rb`E1L)X=vA z*ZIC6ghl+W^gk~%JFWe3N!}4;vL-s4rB<@z%fPs_L9i846l$b}o2Jy=enXm&5k($q z-yKP-S~AgB7+OqRdRx7<&?F^2l^rGA)=7pAKh6aH2u%?y!HAhu!y!yd37bYyXyxya z4NVa!!kALt{G?EjVv0&Y6lL+Kv<`t)7RJa>40tga8+{fLo^(iG=YJr_`I2TDZlVqu zs>S^B_5~W*iOBd3nwYsS%7IG3-4e3HTdjW&6`?-0TJeB6O^k6+JF@;mr-Q{eaVnf7 z`T{v|YLY&mvlhh)Mw0eTuVM~m*DBCOdgsVFW;N%}@XscW(~0%8B8Gt8i9!XD12doT z#Jp;iK1)OLNUnUEKbETGAoS9e88{g3{=uI>>sm+Ss5FnEOcg<^puR`xYpg5&^yNKZ zzsN-~+2$vA4Qmm(9!k~=rR~76w)V8a7LKfC&GHi`W(0FFs=Dz#Q&G|dIP>kL_10yJ zN4H`FiDU|BKhZ8ZX~6kPB*`XRqzrCDqWbq%$|4EOq$wlTmVhK0h9m1iL~U5VMADv8 zhqpX3yhf4aYUR%s>8crMkaewB#i5OYdF(VNr-mjflu91?FMYwGDA9{Nn|b$!8Hjth zRc`0sc|x5 zd5H^Qp&|o+3qE#yU$>6mw^kO_kbi)~ zDPEO_zoMW;j-_Kybz`h##V^i}>;xB2z-wq1woeXCx3*TfgYY-?V2q74i_NsQN}0f) zM~NXA$7iDlsn$LeAka)m1fPe$5*QU0>_vX{^Q!}cR$I>x?WCR(-T&V{vWaV~!mGKh zsK#U7E^_eC)3l^i+>dWJV2)f&vW%3ahX?!kpSgOyb_Zt@lIY0cPqn^1+1We7O(?Rg zJJ8zpNafi{03n)!TMh~E>7RWAGnhL#CHFbVBLe%LMDf?A_ReA2k1;gPDN6$YwL zX#To8SsdgLw5fN4XLa`cT=dfhSJ?58&jRgbjNVdccR`+>*r#plIPif#+F3YR1?1=Y zd1^rgyV)}x1|zsNT_eCS2x3**hrqhEY`1|P>PJGo&5J}ZQDUYD@+N(W#`0bMq}P@; zhNuyL8dz_uBi^~=&kJxCJcVBfeO|SS2i@nw#32=Nr2wGI^`v#W6%9r1;9z3TbMlWE zVx>sddABPf686kiA0xo1+bWJrb7a|ME=kbbA8N{ey_R9J`vUJj#%t_Kt7Jx{$u#c z(+yIEoj05MLPYn%p{^HC@@a}|Av7LJSRB0x&Lq9nmt*`W0oRNWew_T`!%$KsIH?tb!i0`L`#OCuEzenW{ds-6O*MbX>ce)vT&zlx_p#ya&Ibzds-UN2n&na>}XH=f}GU z&Ql+S*5Djcxs^BHI-L<#B5jTgH4O75g6^zXzc@$J3E29_v34`&FG*+obkdGKF z>9{PJ1Dib{Hdu~!H40B*(X7t@B4^eVLgxi+LHDz+#vKAe#8Seu7`4n%c+HSD(SZu? za(A>QXvTJwWfezqR`Hn30yRR_?7WlGQ-{5g7Mf6hkhG<HDMTBC` z0xb3kKaTJ^>~nDkbI6xJby#Az!5Qrie8vkVTtdW2IAC+;RQ~!FyR+_Jxbv;t&iZV6 z$hIQeNv#?bIqseBwBT1vYg}{*76p*{=H|r+0NZBNd;Tlt5ohQmN^+Tn77j_c4TEb@ z^NtQ**)&4XCSwtB`s^S?qh=} zrVE)vG-|SPI1NILwWY$Xc{@@{8Dj%S1Kdz+CU@O;>n0|)_)ijkpprP{IgcMB!3G*NYqrINlko;8N!u94 zCoS3DhR+@-2o7X%*NL>>u$3OiQM3&vnpj|JMsewFi3YAaI6m{dzdZL*kr9!3-I@pD zvGiHA5y8fG-=gLiRcxcJgbR`?;Y0>WZg)Hp@!xkE9RwMc_l=Zd;p0-%G}Wkinqq7y zBWj5CO<74|@{qLSWw~<1^X?JW(5YV+%Tid#E<;@$Xlc-qmkBvj-!jRrB-wp`Zq4Vh zX!X+ZKxqo1yk_##d^%Y7@ltH0TmpG_l@D?Zw9HFhBd)x9aalgA%{kqL5AusadBxV1 z_9IU@p8rWEs%#?E`vRnvDiODof|D;BGPMpUn%~0{IdV+wF+K86a{QZV&GjVW!4xKV zyg(8Ly#$%b_ht-*-R}+;7gyK)bYj5YPMfbbH1j|H8`;+M`oEHGFgD6-ZGHFx*G>07 zue#UW4#x-=Ab#2|7n>^3kpkR10A~X9WhdVo3 zs%tJd)>PeGvyev$yvRv&g|IRZQLJ3;;G|wrdfmOh)iQv?o|5GKR7z`C!xq=Mg-ui| zUr|9u%;0jN_HwydBsVg^NU*Vy)hTFEQ%mfKha2l<+TuDR{ab^)P|RUZII0HbLrVYR6YfdDU1>yY6YBB1(=}+cvD1D_RI~G`ax0=m$}(y3GqjV~ z)VKb0NgY#R)p`!E5(XzCiK238$R{={2#b=gTAY{D#N;w@!@iDtA3wE*j^ipKlYG++ z>|te>j5h3-?2i4v5FRpyIGpNG`(x9MybOLV8cw!S{^=KOP=_(>dbB(Xjg!yA_%Cro zNgWg94a|Ef0zh|jm_fWB2&c=t8fpaH_{3gMN7>bg-_P9;@N1#Fa~XXnl%h;B_(U1A zOUr)#&0LatFduq39k15WlyB>m9Tdr8GL#FOL?Fam(8QmnvyI((TuDk1j*8sIYuwzqR1h4?uVyM z_VJlW+LCm>t@Z$|0u+0@Y;s#ZzB8k?awcL=KE9!J^Yab_wl+QkD;|=$_oof%++Wa*@L!-CRS*ceM}eR_(yIjG zU!c3=KcJiRFX)C-2)eV#!!6Y7Qjwk>`u8zy&NT_Xf^{)5WbOBegy&&~lyu!O~ z|1qpPe-)KkgWP71>W`7j9*Jq6GOzBt)iNI&m8oso8F+?mzBUtB7vZ)qzX~LECM#S{ z4{6dw&2YJsR-QA{$Nb^SM6Rp0Udo@RK!>h5vLm@$H~>W6guX?!f06fc@3~RcviXp@ zHxt)>(?7_27Kpru@Dn@?;$@Cf)#kgUx~L>d?%v?&G}@qr&azDe&a@3!ZzZ_>q%^ku z3{3{}@OaATtp2gD#~fz??duKnSn+FwIH&dDEeQ25X>zhh=fJkK=Gswvq5^I7iOTpJ zzI*7V@#?zMLt1oPZ5)F8Mkl(&rKp`9C)wFP1J-f2_VzbdTlM`f$d&x@nE;uOj2wQB zB`{!L4*LA z%;GoN*9UKg!JVp3hLm8F=r2DjR{q332d?dnr*ccfyxC|YnK>_BMaS8HYls=btcF2x z&WDxB($WeU!=Xv1-?s+)=Nr8Wkb%eTse+r8y-a^;_5I7hX*a_EGVnGa1Gi=W%fNSr zahEWWrD0^9$gPgX%Nt-Y48G-|gnX$sPs4c7OS7gV%(xH+$tA@P6mN@Hzm&K&Yg>*Jcr^yHZZG0h^*eq$gMlhiLe5VfhG*T6liPdk$@WimYd_-dmD${-Br}-n$7-? zxgFPyDIew=6ed$;IVHI@2W<309fZQ(Ul=~}7lu0+Ay(b!gSW@pH$QW$;5nW&I!Eb! zorXx+GXRIF*xo4nvF=<#UA0JFUo&`97O*{z@8CrqI|8}R;Lv4hhGu5*och(FD|XX0 zVy~Gg$^C9Kc_funm)x#%u&V=;Y;&WNFF^cIC5h@T(tZ1+63LbT8lcw1Il%%QqP1$% zJh(9~JCx(xs$yts(z=M|M9V`THW;V(nC$LSDu({F|75UH6Tss97w%Y~SSm=U7! zxQs=Z)y5wCtn@~#G$a=uMC4gSd9k=t@Pw-3E(PZ~h4@zAb3uqWa#uip0!{RI(4`e) z4qNDXdt#Vpg-#d0`1Xx+;4a?K<{ZGI9_B<7LTn(PniGtcxtCLk9M^Om9krh!^xN}? zU-f~edPAq#ld-vB;OJ0-v%*Hod_Iv|3nU>)#l-b#IgkXraO+*koz6v9n}6)}vswa* zyC0MSz^+vof$mES5l2nblpH^Pg1F_bm?F8&;DxfCO(S&$Ox<*6Dpv5*P@P9yFPi?* z%dv8IUC*+=RaqLR>(dmhpT*Gs3-D#D;Yjox@!uf6!NWy>tvB=J^M2rsl&4ekNyzy( z`UBfBhyHcm&j6kG8YUsST`>}a%;4_T{=~5In)z0cH-~oZ2laXJ=40|!)ND~wQd1LP z1!U)vop|j_-BTx1@rZow{Clw1m?)%EQbqsv;X8Dy3^Hq(Xo5PRx=MQN@U>+;)TAYT1PyL;#5P*}>&U;kR1~IRabJdqaitn2Xy`)_$ZCvwH!FsoUQl=1k7+ z{E1{EDotHdQTjo0XpsNcf2jYv)Nn7-Fj^lLI>MBTZ7hD4i;d&XsbWU{PhA=8ilhb=^D@GsVG3C zLhwao%h{WtZp5;x(lQSqAth*U;&LuiU7&D>f~CLktG7%bUo|`8Rf#b%DYAl1Rs+9z z79_?-(WzsGeeDfncBkY6A+${jXo$b}*9*Yd{dt>XtBHWITuxng$}!;gFIXk&Ox5eT z^Xx7@Ux1NhUs=d_h%1I~^j{gnxqq<|Cd@30YfbH&M8~$N4#|Xs5KO0a(jgBx3RAOT z?22u)mrP9LT{fO_0EqvV$lWe?y6_Ta#AW4aH(Adgd9A}No|GS>BUbLGgT4y#0vcHU zQ4NxoMQELL6Ep+_f~k0FmfLso2I>k$oFNB!!!L1z&$&U7_1j}u8vVn=Ot-?#G7Za> zHYdS6Lr~UxL;Yh1uFNY;#2igQnUD+cJoEV)I(SD6Q#nUrN1`g3P7EVB1;|YZHqb%n z^1xw03-+2kUP_Z!xkw$dcTvg@MJ?`l%VnhSdEz-Y%01*Cb!w+* z5ZoHcL$p=(b2|IoF*yHv56@XQSq>8#if^Gu1zoTXU^ zJ22Zxx~60r_aTwZk^bp?O%;d2T+;PFMZim6?xHk;aaWU=XvAfyPL_sNbluALW^LGy)8Bpe~0W-`~ ziL#X*Q5V=4D9xt9!wK7WLpNSkT}Vc1@n4}#Nvw7D9}?j?tAe8?a0GRj(R3=1hSnCC zO!Bc2J28)f^+==uO+%_pFEblBxhO7Vq#)DubM!jtjf%)XJM>A5t;y3RB^1|LU3rF> z#B1W@Iu9&1qAjzc0)Nvzk%z|x*^~E9MXIigC1&U`JGq8Cz1^v&NR6$|+o>U&9-P0y zM8B}NaFiNRm7zjXc?w)aRtZBlvmi5yZ)p@Tbf<*h47IMrV-x zW-NDkx>dzntk_I`JE$9f!UwA7NJVBM=zAB#l<(`<@{K%J?6QWY8fE+fOu`CH1&V%Kk@ z81I(DidN=l{HZe&WA=*h`}g%k6=`pVqv+Ez5V_z%GbdgC9wm2DDaJBL5n)&|R1@L7 zM$TH~m>CoW?hfFGB^g}E-**Jmp`1|)T2){rX);?LSlG=L*^HX+!<_X=8iZBgZVBAY z#1IOfC!rXkp~YIR?SoR_9xO69VF|~l37pv-iO8@ZGkGrNw`B)PDF?iGkI0mnJLA$rPpK0F@Hcu%_P|I90T|w z55V>z`4ZcNxkjUm$UMj+G$JtgwLA8zNNWfDgnf#rZqt`@NzL2^B?;4ELC6>PRovtP z;<59r{o`3wa?ZtZ zi0SzSQhN|OEe9Hd9bpX;(`p}~N#@4bHv%0x!vOIm?rZcslH~ygTgHS%7ib-VbgH_R z|48o#2In0FF|BI1yuSACeJO~le0pMvV3cUmhEGf`n2q3^RQ61)STarA^fR?SCPqP# zLbqtW6qjK7qzTg|hyk+>Q8f{3#`5oLjAuAFjU~gl0u4(?H+Da`(U2jgjJCqEG;%Sn zgqTTkVqJ7==2C)Yo!@k0uI&&5Sr8nnUoNQBFTea&(g&W8lH~e>JQzuxDz{1kbi@l| zgDc_&6&v(ixnQQC0di<*S_?MSX)46<;f{(Hsn?cDG!to#k`WyKtup&!TEB{lK*A=( zy8^f<=C9_)bInZ-G(c~D%#S;D&CZU)8MR>yo_&?pQ4_?&Hq=njWy*&S^NQ;jYbd~C zn7Dqe+m$|{u4uq*({|l?P#~`=G>ds^cy%#hNV|UBR!p5!QX@^-|JshwkLQ&L0R@li z?BF)*2^TyBL2*W>Q9xmpe8AHl+$RcpIQ+X{I;Zd+Lp>@&Up0ZeZcg9_!$fcttZ`x+ znmOU^lZYRjJ>(Fxb_oQ#Wl8FRc2tC+q19;ySL%ZDQ6jXRel#r(Dk-C;Y8pfuhx^{J z0?intXoVAHHXr1yA!)WT7U`6s0UV?>2mzincy7r;}qWsZ*18RrKD0(TBG%W<#m6_=6PRaLK0{4-{eTK4HcCeDd@hFpbeEIv)RQ+ zBXxnYGZ3ITk(f#^Lwrw|nAAz?`K8S!; zn7E)hc?57kkLC*++UOM*HH;KPPiF*lRm6TFcL8&14?x|9drXdjp^Z-LH)Ei*hl;mq zB&s(}Y^wNKGHHsIM(6%Rrw)nkJ-f!PvvK`7=~2ta;|<7M+&AYXuoT)?f3_f;%q7QT zz*gr6r$ESKu=QBdhkZyMI>LZkYpg{x3I&uB1LpT0Vx1%doFrs;tYymRi4^vO^TbkV z*CqywAFEmOg7e7H^XRXrcN<#0zi`$(_iNpg4zF>JTvQO8F+8+|(05AXGXJpuUGFl--wqQbf5rH4Z_ z>?=S=wik71F|xLPQXpz*R2F^r&FeGi)X|e?mz#GNfuhfl*343wUri@y!@MMuu-)3< z3)oQ|!s#Q!WwT{}569`PHf+^4wT&sSMS#!k!gpNNUdFzs9w%x2K1p>_f?=oNuj-bk z9*BcTB2nqq)%O)k-c}_8+{EVziv*AxLokiW z7O!%_VgfA@!OQjUE(qc<(saBKuBDPirI{gx5RYcR;(B#W(t>Pcc< zUQqvq2Rd6T=I{yaiullU6R#$lNn!@R@`4(?Oj|jqn*s<(%f*URVq=1jx2=RgVG#io zK!jn?ryd9yjG@mZeOFK`jJO3FnID?vCt1_Gy<#WjBjKpc^d-slxmb$XjJ6A7|@2bCkWwYM+y8}+2 zCdP2Si@@)Qp!@bh9>tGyy)YJ$()b0jZolL3zH6iA8c1!u*dsu2F8dBk>#konx;#y! z_4Jz@#lwxe-iZF>yT;i3;XN@zJkJ>#>Vl-BwZjjZ6{#665FI2rQ4`E^04D!f|aN zC8Us*a+SPQmEqnsIA5UY4{!7ZY_C=U@zNu`j}bN$>|E#}9AJ~2XM#nor|mA8UxAfc zo2~YQvN^dQM3%3mt@tQ6SSmZj*M^gbIG5%-I4C-S)~Y+etBqOrIe^RbV<0{jM=%@N z($Ii=P%shGzt?k-i&rZxkXgb+=33bPWZ#>b5T|k^HK6&c>w&-h zqwD$pOV{H=OD~3)1?qY>$9X_qkLMpe=|8RJ$;!$e=|9f|IXx)glqmglT(Kuj~`f6AXwlOX~}p$ zePk}htg1bXQ`sx84~J62J}PJ5K8(t`8NZ0z0A;fp$^OoHE)D|2s<*f)jHOAK7@$gB_9nLr)bEhN0ha3}UCh~ILYE&%Vc`4!4eZIvnA{oT|- zvixL#X6tdO08YaxyBtg3vjyNZOx@yceqSm-XqBb!aj^uJChT%F|Eu%>ECDAkUysWv zuryyCPu*DtozGSiAD*Nx!q+O0Fuml{H zvBf?wy0$ulXhMO7>-6s{mz*VAj^pi5}jlj-iN)cT8@9sVl8Yv|rYpfo#z zf5l)eu8L14eM_cvO=0Cm1uvCJdly3GM!|-7fU$oC>^zn~D_nKQW1bWl z9+yh9j9O%vAckd0T|P|-?T}GnprCEciPTLQOr9koIehVyQO2cbQ%D5{vIiAZ^JJ!x z4#JJPm=#JniOH&*oz}NOaLiGNb`q7b)Ln&eB;PI)MuYf=_S6E_KNRLnRbcVXTHG&zKgO;{5k<@4x=ITN>9N-0GL%C`{^#->7RDvzrPexwK@b&DCKFQh z1Q8nFX$h|9z@R8BJ&7^f|sS3085-jAE*)T1*m-Xh=WL3r?sGt{fm!mT*`89L{ zBVfY72-xTeB7zC8R34RN22MwbSsHdBgt=-YFaw4li2*96lUn-azXidbH70TX34%Gr z#P9pJL}cm6i;u0S5W2!-HzBM5`leJ{js{*KmWGV7ki{er^Mo>ziuYX)cw1I=vFw< zk6;-+^i0g_?pI3A6;{Z?@E=jKUCqpnTT#AVN)}X#V=`wL=}}Hvg2|nC5qdLr_4^UH zuY&JX9z*FFce~%AOIHosF~rWDS$CiP>;)#MnPn##MaL$}0hDBZ9k5XkP-S-gA1ZSs zhR#7mO;KWFErw14bxPbF6GE-m9`blt08zBitzZMCXk-n2I8qFFc(25GOPpB6F`9a$ zAZgJ56q-pzmyHUt5HZ*GCA)1aMLAT2Qx%-=G!=(rB`$|c{veXgw1v^aWBAk;q>>3P z)VpdQ{vKB!l8~=IR@`^VuA|)YzP1x~o40-HxFt4+j=OM?*}2M^oOS;{N5x=H!8*~` zc2=;fYFHfe4)Gr$*Il-a_1$)$`do+mde7kU`M&f`P1o%?=P)$c1v^l+sp2JKpU0Ei zz=K!vH$hCe_~K}}>=5PaBj4_{-n9dE1-c(U&cL za^`3rL(Tnsjq&kwr@NFDXM+;IZqn^o_2;kYaJ{Mk zA1btQvBk~nY_UQH105F%Kjdr(+@8McbQ)t7o!Tbb)6rSS+IK2M#Co#-kGdX7+V<^# ztLrk0)I$pvtYkQ!waTUKYG&Fwx7pnFVtIEl`xeqPKXS%(a~xb~qE3_R>!MDZBvT4x z71k?RYGfO#WH&0u(vciWH7HmAKH#E|12N#Xk!D})GCu!zkR`qgnh!4KxzADN>4MQI z>o@ttBFt0P=x%PVQ&!GX5!=I*(}gDoO7Wb-0wCXqNh{5HvS91{rDi6RQ_)r>D;Y>J z=ghwFtFE?O)q18x>8A3wX{h8s-dl-4sZCo{BD_2L^*op!^!;= ztIMU9D836rbEI>VtO8WTV~7vBO9hilCZa|Tl4ViZ?+s`v{J#fRvHe|*m6=UxbNL+j z=Pi-Iw3&jYP0s7Do}@zAuO+hFus<|(8n57a#B(U*a!iG_7YmKQ-0J2qxmc2l=gf{` zG^eP{ZMr!ww6D-4=1tXX(~-Db@o*>}8CFW9)=eR?bv9U5Nvu9m4K2KsepC*o**#rI zPUWfxC0IeT)iW#)b+`v6LCa`N}f>S@VLBsr8y*=V4ZxnJn?ul)h+uMsZb24>dy6I-Bfe;ikAAKf1_l#F= zPIs>h2ryX}RI$F5OV8%o>g{1y9g^ecX)26iPCLqb^~jxO`nn^69dLr|QnaOx%|F-M zSfx$d2q_sDBM(7ALA5qpSeMp2YaPvy*%mBNESOz{({3l7u2YcWUpF*`v*qB-1Rrzl z9-tq;RS{{oT>N5rXC(Z%*zRfOhp)}#_kM^wRHNUyGNQHr{Qf9F6Y%!xbkQ0l?X?nP z8%z1n3haRJvW{$5^Xv6hrtBe9_hR}stT_NZPrJGI1lb`FiJ~W489iR_E6u_h%4wv6 zJEOa>m*nP))@I_BT^?dTxt(uYB9@E3mb1%~@!Flv2drSB0YI}Eg_-v1g6N02Gri1vZ$>!PG(xcx< zB^H0X(N$M&V?a{aGWXa&i}%f|T>P;=mVho9U<}~L6|Er}H#c*7>RAI+?lu6@$Q-T! zKX;p-09sc7>{ut-ARo*+1I%xfoB4Ke8_;t|X(H0spTA41^kAz1`w03tqfBAq>oAWZ!lMni0H)6hDm6xIha}UC{jPm=U7OZSTm|q4_cGB!8g1 zPy}3jG^~FIK)+xV2H7lxC7ZHHrXiwg{AN6td*fY5;(f=lbDaL+N&UP>a;OAS-h++> z5%84}D>fWj0*nW+-|**r>6hvPK&f&1AzI~vKSo0Op@$;!^w+0ftEYWF2=04!$Nfc092KSPbheaVceujJnK)>_Tf2zji)4Ni) znfUXJbMnwrV1=tu15o*~whWNFdF{hpL6k+5xceY3$c)lK$r$U)ddug4%hrDhY|TB| z6!_S@^G;Q)wt;-?YoF>5JRr;Jk8|}q*Zeh`>CcaJodIhB<0k9w(_7nIPly*yY+W9L z^z43`>repRc1NToWY3RKJq8bYMoQ8}BzS-zNlC$0CnQ0fm#;8_JGb@@sf?P>2kU^@ zW94G485ArtjU7R4z-HN8ubDqel44crr{i>?wT_v|@1s^o#-1({pAJQn&*!?qu$xaB z?Okj1+g`X%tPtcYWr@(6Ux!x)pWS(UV?S)XYvhIYv7;uAA{8MN>FK{p8 z2O}u-dRrzvre9p)2!aaoJ2Y>8CaUZ1nLgk6r@kKe-awobB~4th-}t(HvMJ@kh8+M9;BZrxoO zEg`=0a}I5k&89I#$suLrL?Pne%8L4o!xM?{gxkG5RWfSVV4yQhxDN>rWqDFtLe_|Ug-J)%uiq|^!njKHxb=i7 zk!HJe2~1Le&eRfyv8QAkUDw=KB!0rKf$QX}9M*<9dMri{*y8HDb+|P;+ke3E&fW}r z%$kMfSBbl2J4j4YTN-&AJlkC9iSAQc9m6L3esu97>J&mHokkWZR4a`hq7(m#|DND^ zyK@7*9Xk7ESLFtq5we`Y0vbBO>={*CYTF;Y2iv}b@CVQ3Pl)`hx+=%+*k*0aLU_1d z=svdPJ=g9%MA>+22N?Q}(UKe6Y4m!%^paQhgNRyoU(z3|r<72n*PcU>-@5P5^iLUP z2>2ZvTs)z`5E$z^o3AX=JoY6rq-y~yn(r$7Mi1Ws#~eq}BU*nXW>-m!n}VcY7O~=f1$Nv(+nsE0se?2)-!~sX>uXPl&lsNe z3O{JTO7d%ogCFYj%eiXiwH>*~y(NU`ON-aP+ar-ncRQz2vUQVDu<>OQv+<-obK>%o z;UB?)d;&0pn-2EAFfa84$_IMws!UR?+;F%)`R6`sx!b(Kk{g)XPhBq9&xM1#p0)pJ ztV8pIoEzqhgek1y-*+xq_I`NKpl@ii*lqqvx18g9HTRvREWeOdLu9d8{ITxMK8#rX zm)#$DX~t_G!yJ+2E)??#ep2E`zahrC;DK zRgLVqX{HN}yz^21RK~6#CCo8oaw4TxRF8HTs`2&%fbERgPEHDCLiK)JfSv|DEALPK zAcEt{v5Ac_+u0;QbUj(yB@w>MAkaqmrEvb{JeU$ye8y}JnrTBDb!!`WJrAC_ZDDHX#Saa*-;N?i;J-!CzXVf)= z`6u*kzN)<@t;?|Cgl)7kSby^kH%*a?UDGr%JCk)Fs|a`T2>Wo=p~>bRE_@np@#$V# zOWzMOv#{_m`;RspwVIQ-m1F}QO-EH!~p)kV~)j^ zR!Z}9CW@rZpWm+J6aX2@po4fsQIF+st$Bkf4MyKcABF<=1niPu)1-!4F-)XoQ|2C5Bdk6HHv6XkO0&%=ooyA?-TfmtzMX5&n1L54D9ofcxdQBU6z z;DWv(aBX@kn!Wt+i}Yyt4bm9Za_kOV9BtP%Pka9!oZZ);aadeA#&wVN_<5t0oU~0q z;TI>JTpA^_#h$UnuWE7He2x!a3JD=WKQMTC>21=e|6CES8OrZ}0+R2D(&-D&y1(wd z1AA6V9KVNclJEn%v-ee>TUNI%q^XNPpjGB^uSWeo<$C^D-QD?(OKiW!@q2;Z$0B?% z5myXTEE*hYe+ zQH8#ngvxKc_}TZ$|H(-ZA3HV+_)wLDI|JDMTn7{vg?hEkqHhduwi%6#Z+xFV=_nI3 z=_Dx0|Mn+(OY~c0x>};_d-9-#_(aJ+SfejS)5)(p({s3ME za!>rXmrQWH4xu=vdr(y7$-xr-Bj6_gR04s>ViBrJWo2|8K z*`A>{;9*<=JODFqfMcb_Gr$ZXCS>f>tIFAfRU?3sN0;E50O!L`{51Ft(6VrJvn4HA z{sE}ySZ0IRKsq45FwbTfnaaG^Cqncvc;)jh2#9CQ+OJVR429xg?HWWx{62fV@FSK6 zf%RH>459_lpyj*E!+g$va$Ser0OIxL92zL3o6o2*J3L}RRYJRN zkQ9NM>GLI@_d`+ChS8BnR0G%OTt?6M$*SnN4MnANh}(@U1xY+1c#2OBHr-@8I>^BJ z8<*tm{v_$x)yx?G8!d3l%4ooPHWT>866@(`CP0UKT zHTYttLl5#ucpZQ;P_uwt)H0jEoDi^T_}18p;MWrU8Ixr1Lf+*gZ7PM;5F!MkI%>!= zrGz>tgmny%QB;JPN?n+w3$~Of49-6gppe*J`@`OVUxb0f5L_CGAm1}&fijmpame>T z7l>PQLLF;b0c9a|aXx&f9<^c+LxZLk#9CXENp2BO@$pmgRMIGhRRYQQhreYN3~(>G zOMVrjAP-vEPzFfWPOPI@fcZB)yV+|jKMFrUha0aw|EKtJaxMF-je7^bp-sH2*(?`+ z)4E~ppEGBk;B5!*5S#e?iJu>ruif?wBaj1@$Q`|b^7zC_4DbSg(L#}*uU{rb;DAqL zwmd-9a6BOvN@Ink&svT$!!mA*M$P*h;x*Cd6tf{e>^v_7(-h&KN22jrMC3{HbMdJ!ZHO4Xz9mYqHFt^feD&8BS6AB?Z5_m# zTDw7jk3;8Er;iiyhOV}@&c$y+5{0vY35xujA8ARZyDrCcP6x zAjw4EZ_4+rH8VeEeq^nzz0S$md9wHOT=%`t$yU#{gLvJihsrZN9CRsXab8ss_;_Tc zFFC+H%}V5bqi{J7I`4kDPh=*J51e1j+35@sU;!i0skJ2OR5uHqefgYF;}_2?pgRs7p9mh6jRu++!`QwID5;@5o$^2Mc1nf<>u7*f?>v*5)DC0x#ZeQu);R^lTh;^X1D=rE@hToM z?FrPo5@kkon!LxX!_hDt2|IgdF#WzH;D9PP>v=kbf>EfP5y+OR^%EeRafd z=1j=x=}ciSX5i6P(Dk_BCgkd3pH)=|QrS3{z zicO`iGaUN#)T!u+b%#?8;+ypNon$K7L-xRV&4f9euZIWFY0PsE_fWD@7= z0Tuqyjs(!)IHki=-@5_19 z!4$WQzo3v`uZ+AmchFnwTVp$b@gfz9K)eTgm14au$}?B!>$aD7>XC2t;M|Cw0$Obg zn0(An__}G>F7_f*b8Hy_BDdbsImh64UP-cOCW@=;wW>)jcSz<-#l64RhmGDcF3_YaGo|(| zA;msPeI}k*@5~Taw*|R5p|#O6zEOuKSZ;c#_jj0?tj%3lSn^m)S>EO~JzHdi#|tz@ zB#?9XEarUFBwr-4A{&c|}`d9nu%pH)$DyL9y` zQhe6jkXeq307Atdibkwv9RA{rg$pOB%y-Jr5{%Lfn}Tlh$Vf3);`wuZFlVHY_5GRX zj48o5IekxYW=JefIK38VrmW^ljea%6siZJkak>o0_7c>DP(%zcxK&806Iw{OXjmL> z2lwrKv$Wk~U2G3K8$29+RAN2w%qQ&HQ6}!iVup%xRzs9mS&CexUG`ql!B_wr;nB2|WiI;jZWpQ@t888d^gP1t8ahP?y{lnURLEqzs+B+5bs?3Y{fo#h9Ef4x)P z5&P5!XkuoZ8euyX#1Dl#Y1pYu4A%Q!QIyC(SSF~PQvlg6T1UwUxa2*W8b9`55S^Xw<6q} z%)Jar!lTrocpaEyXh{dw)Q&DYHlW!a){5Vx)gv93jP4Eq%ipnGgi!I3@W#33soE<8 zfw;t+f8L4$4F#0&6KMY44j}1BEqk#?qy0 zH;h5k0FC9-#bkK|?+CFKMZn~99UG9s>Ic~D01|2lJbMto7QiE?_cd(xOtHXBgeL(L zPIm38yOqLsa=Y?8aQ#R$5*&B_{^!h?!*JhnddGeKU4y`nxC!Z>T=FWp$)n^sHghy< z<0aW4+gxIkG;Un?39MO?L;}b|NdKOx>K2B)toclQWb9{o+Mgek{#2`au$Wl$|0pLBm%+dFNypr6t zg2{ZL+g&gG89q=(bObsrkWVj1bm4RV#+Jo9Bjt*J5w?vUeOh;ITN~x5QRp2NZ)K@3 zWL*L|)-R84UW<41AMd?-p3b*`%^_vtB-XT1I(gwyrY-5IKb5N@tMr|#hpyF3n^;+R zFIG#ijT>pF2%RiG$dszIX-lmX4|`Rzh{7vPDM-hDd`YX6%DtV|>mMhlftAZ-5O!Df z8bWCD>TzF-@XKK6gd+MHX(C>y{XUMax!8>+yxQPI#=oCbw4y(DMsq$7@nMGJhgm=+ zXZ8nXg!Xjb9iLe`uDH9;ieA+5@C3#Smn{}~IB2xTr;|y>PkNjOP zZXw3rnp*@Fe15IF((d#oC2uaw8_hyYm!jl;YxT{>U5}g40N9pxC*#~?P3v7`nx@A| za(@xkF`T7p@y2>OZ$lLo{f)i(C1C-2+gBNxlRM9^j0Eu3%KFXmo4uF7?rzdiO`x-4 z=Hg#)m&E?3P8+_d4;2le&Y?S03aXQMRoLeCvl7Pjn0xXt@73J{?&mO#F~?=Ppov2| z?Rdil76Z^U{Yvtg3W4>JHNfT!E>qH-Ntrd!9`)=#2XL22JoQ^w8$ zOZ$SLj}5$B(IxE03Zhdx68Z(?-G@gn069VN>1>n4Ne{p6l6BTapOfGN zgPK%xvedWM0?8iQ+n1DkS#5t+qM|=Vc1IwdEjHq(1dxs{9-6k-12g#@Q5zZ4UHJPNy_7y|GT1n~Uu@sO+R_>Q?c zK0KfpM@#k3q{w6`Moxzl3Px9hoX97GEcegDaD3u8c_MUI9E_O>-moz!gP4n;m~U#g zLlh^Euh#?%YIssdXl6T0mbZWDx_Q4)K|hTU3M@B@?J77Ddb8~j#en;nw((3SulK{XFn7s@-^_+}*4xq`-$vn!-2;$J1z9#60TDyo7bZ8>2V3 za}H_3n@l7TddqCK#C&0a(dDU-?g1VpTf2QtE@tC2%MZ3QK z^q}W^`2GZ9tw5Hla(j_z#M{rKKEuk5{Cds+bntTa;6=E&#HGffVxA>8iinGEZ(LRC z0T~!=C4|!D$@Ia{zL00v|2r{lC>7x|@roJUOMh`vy5XBUO>FJPFaAfew1Gg#oyCcj zcLKqL{UyGlI)1iH&5fDTvikv@1YD(fzWaR!k<%!lkUbnr4#(Mt1jS?Ogf7Vk<4eFB zhxf~AeTJo;VNEqokUx3TCs!XAD=hR91Z_uXW+r4Sd`DfNV`TPRt?fyVMP!otSB?EAMC7Nt6s z^ZUv*CozCzHGW4=h8QoUI^$VbINTrMF^iQUTl@L%+uJ+8S1PGD*%W!YHZhms)N$S?#Z%(ABPM|$5gRR81F&!E&;DkNcnGPO;@ zgpI8+*47$N53dG@32d8U634=YH=>SJR8!qyzB3*-VPD!AdG*%sc2co_^15ZH8iW-r zyC@Kn|2)ina<-jWvi>g~g($yMp|KGiJcAz4Iw@CqP+J|+A3_bT)QDP{rnW8~Tbo}u zQ_X4yyk}f|Cjt)amM@$9np)##liHLhHQ397AxBG7cQx>Iwrg_27RiE-ZZkn6d7h|) z@m1QqQc`QQ{;Sx)-KIQN46NA6Qstysij`b?ERgDrt(fTpxm+-vez{TtJA-5;k>Hxr z2WxYi;`hFoDYv0^2AbW}e!N5d^k%VsnL}TU6#GN4qN!hmYKVb7xAfTE$7IdtwfR9N zT(G#OEil%ycFI$*jR4p&*O!~+XK#59+AUgS#3=SmWZidN8bQ!!@3_x+N1ePsP4GXZ zLC64^KiL9@8o#ickR#nA{q8pgbUj%i?=zL2^@=qigD$EAPuF+mVg5K(IApdqSXSHD z4yhnHcb-rE<-sqz+1WWUC%&PQ&l;z|Pbed#Kq@nx3YE@G6_lsjcHjjS0*;&y9NseS z_EStejP(+cBK?U_4U??CoE?$9AFs1&?%sr;Qz+KMAi#Vk5=I^k7dT zGeQdztst0E>k>$K6ggOa@vVtst46}-+hh}dtVISH_4e*p4@#~9V!=7WiDz4rs?BZm zYYDJjmzb#KPo5A-{&upDo|G7rt{SRuqm;t#Se%7(nhX-X6Wq@=kU&(9>KO$kwF`|-{IopsoA}wC}$;c z+z4MMf}Xz*_@6O9Xzejd zxQsLF+=`(@*R!HM_LfX&B`rntx$dPb@UmDE68{J0BLG(_(iI~wH#CklexYb=h^HU} zs=CgQ!YLu3J-Mj}kOF!_kmsHXiOw`UfMhCM9mKB^cP}k1zW?PE91!*>Oc9lyxb|>S~RlE)_Vn$ zC$4J9re1D!Bxj=kh>LvuM}`g&uMwD!lKd zfEP?TrJ5B(yP)=sim5i{9S5}KK>Knyaaw?D^ajV_P?ng?C4Q>D!pI}Eo-s?QHoE z^aeYV@_pN{8n-^V_)#Q5-7`|#OFd>*l3VH#bE!wJ-p-EgkBai-G|yM0>8w2}LU&UN z8<>LoU0B_Z=wchWC%31pFWySEeq(M{^N0Tq*EzmWM~lXfTf+|=O%%X(uSXP9D`gi! zK24+@ zV!BJ{O|ZSBmc%E8ayfJQr!-rlAnBU@MkkdJTw)9#$tz0lq5e_GVU=5mNr@=4Lw;BKmr1*49r7S zKtfqgSe5@k5_(d2^B4Os1QZ{Nh5YKQE{iW*f$4l~o~(|Jdx!@?8cp(Vin7idGymU2 zL_gQRiU_VWrNutgn}8P&`j289)9JhR{B(5pK#sUeQC-sx=y5u|GwS zC9VEg;LBDB(*?ugF?~trO~PGnX`_sD=-Jd83(zGHYKz6Vy90x%JzLOSYlM~sDHq#<}x4b4v42u9TlH3rId3QZp2^++d zW^Yf8U@1IIn|%H#!2(BdiIA!DX6~qdSs~fX>Yyp9AbjN@7A+9UaDF!oJy2?l?Gi0B z$%2XV==0e7LXy;%NsGLuf9lcoH*xVXnv%9ZPL(_`T2}ZkH>}Ufw>CMb{DB`DyZMZd z$M%0Qn!#CK@b*B%Q4a69mh(ECVD6CDSeoi8cD&- z5Cdl6?c~G#BuZrT->{q`H*~)$35P~(vRxfiwdnZ-#af0xw?oO<-l9qW4t9BQNekht z`vTCG5xQ+%(C||DBw$@APuoevan$#C03HKR)jZlmM2OL8{DC<-+JA;QwSR%RFaI6P zB@p0`H!uCRjh&<~wCo4Qo3)L9ElgL2RRq@9`R@4VyOY^ativPs5G#|!b<& z7i*{LuJcocLnWA-Suql=_>Ih`uIMBF%+-Uv>!W3PAbVKupq;k4n#J7g@GK!o0McDL zk8`hT-RiBf)NL3$bfxR>Q2tO4 zsS#uMSv#Z}Mr&aP2b!%bQZImCZh4@`v#H^z%fQR%4gshIpc9DCdHBqQmHY)kS<{@M{^2-$$hPXi)X&vO1<% z$Xujp@B`EEjX>BllQ`GYd-f7iba1hz1Ut!x2*fT8iK5RdO9S5Hbu~_U*);q^$SG*$ z&k{rk@39E~qcTP6km%0zRQ$ux!XB#?MQT}f?5mm_dwRYOEt3=d`s!$vCYrI0{TQmMx3)5w)o`MA zUv}TY&QQ z!UvdhG-iN7U=y=+aQ3_@Oah*uRIJTwxB@jR6x&C%ZIfy(rod!5>+#C5z4%~IDWydt~!*BPLgIVg0Hsxn;~^1B$u_16Ny*J@A*qI z7IVb3sJ%MID~a2V==S3vGm#%(&PA9gm(K8pP~3j@g6$^V}-*v>?NV? zq_^bE4gHNnuqqU1krU7g&w7g+}EC<>z@F06Cgm+|;w=i|n> z)<$>t#vA#^IR3e-l(R1uj#8~`bSfB@L1?v3Nrhi{hm$aE!l;u z8a3Sc$TZe#9>HPsYn!e{)XdK53EY&r4U+`J3^83_w;ISHDDAWekDv($k0l;i4wyVF zAl%VoE}Y-!VdZ$WF37)Ggc*g?a$;_jTX6v^8~7&VW@pc z+EMoEYZn;89~iAk&DL(>D8JQgV(BhGQR&jtz9HydsG9$M-TCtmTI%9 zEK|&XN>dNJO4t!;PEI40)gkQ+rkVJSn0W7TV?BG!{EurDJ>4%?fH0JI!}tOACXO~t zawA5UW^VS%KJOQeHD=F2SK@}mkQS$7cm^}=hH5aIlAFc=DZZqoNa@2>-Xh_1&Sno* zkCAXiK7n^A%Zn>}AbR`&J}Tgap>x4_x}X5FS2ev?%g|btZgiX8G=~Sun`+wLa2n&1 zJ?iqiF}uaGfEMQQy>1Y@PJ1>tIm;2s*~*yMh4f@f(P&_IyfPWb4RCMu6mx-gIyRpYmiBGC zkZHHJS9^(R4>?H?I_2TlJrV1qZ124+GeaXIH}^5GE`PzxvA;qj(>2^C;Tam9(SLv; ztHmtzpc`~VaLXSgf<+GzEoH(mOpSHQfQ-X}PI zdE_J$z1fDjUSv<3d3OLVU4z{n-`hv3OvH8#o!yu1_8xBVz(LUCcuwSS1 zz?+0@hP^=rg;O9hi4JF#{3Lk2l%xb}$#Eugum%W2|^`o-v6b Nx*7vh;pE@O`8T}JDfa*X literal 0 HcmV?d00001 From a8ac781591e59b8d7162233a2acff85b8887f137 Mon Sep 17 00:00:00 2001 From: Chris Dornan Date: Mon, 20 Feb 2017 02:20:12 +0000 Subject: [PATCH 4/5] iRemove library from regex-examples (fixes #43) --- changelog | 3 + docs/badges/hackage.svg | 4 +- lib/cabal-masters/regex-examples.cabal | 2 - lib/md/roadmap-incl.md | 1 + lib/mega-regex.cabal | 34 ++++----- lib/regex-examples.cabal | 97 +++++--------------------- lib/regex.cabal | 4 +- lib/version.txt | 2 +- regex.cabal | 34 ++++----- 9 files changed, 60 insertions(+), 121 deletions(-) diff --git a/changelog b/changelog index 5e377d6..3a822c3 100644 --- a/changelog +++ b/changelog @@ -1,5 +1,8 @@ -*-change-log-*- +0.2.0.1 Chris Dornan 2017-02-20 + * remove library from regex-examples (#43) + 0.2.0.0 Chris Dornan 2017-02-19 * Split off the tutorial tests and examples into regex-examples, leaving just the library in regex diff --git a/docs/badges/hackage.svg b/docs/badges/hackage.svg index 1231a1d..962beb6 100644 --- a/docs/badges/hackage.svg +++ b/docs/badges/hackage.svg @@ -15,7 +15,7 @@ hackage hackage - v0.2.0.0 - v0.2.0.0 + v0.2.0.1 + v0.2.0.1 diff --git a/lib/cabal-masters/regex-examples.cabal b/lib/cabal-masters/regex-examples.cabal index 717ccd5..0c687f4 100644 --- a/lib/cabal-masters/regex-examples.cabal +++ b/lib/cabal-masters/regex-examples.cabal @@ -34,8 +34,6 @@ Source-Repository this %include "lib/cabal-masters/constraints-incl.cabal" -%include "lib/cabal-masters/library-incl.cabal" - %include "lib/cabal-masters/executables-incl.cabal" -- Generated from lib/cabal-masters/mega-regex with re-gen-cabals diff --git a/lib/md/roadmap-incl.md b/lib/md/roadmap-incl.md index 6906af2..d6e0367 100644 --- a/lib/md/roadmap-incl.md +++ b/lib/md/roadmap-incl.md @@ -2,6 +2,7 @@ - [X] 2017-01-30 v0.0.0.2 Pre-release (II) - [X] 2017-02-18 v0.1.0.0 [Proposed core API with presentable Haddocks](https://github.com/iconnect/regex/milestone/1) - [X] 2017-02-19 v0.2.0.0 [Package split into regex and regex-examples](https://github.com/iconnect/regex/milestone/5) +- [X] 2017-02-20 v0.2.0.1 [Remove library from regex-examples](https://github.com/iconnect/regex/issues/43) - [ ] 2017-02-26 v0.3.0.0 [API adjustments, tutorials and examples finalized](https://github.com/iconnect/regex/milestone/2) - [ ] 2017-03-20 v1.0.0.0 [First stable release](https://github.com/iconnect/regex/milestone/3) - [ ] 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 5e54617..44da102 100644 --- a/lib/mega-regex.cabal +++ b/lib/mega-regex.cabal @@ -1,5 +1,5 @@ Name: regex -Version: 0.2.0.0 +Version: 0.2.0.1 Synopsis: Toolkit for regex-base Description: A Regular Expression Toolkit for regex-base with Compile-time checking of RE syntax, data types for @@ -62,7 +62,7 @@ Source-Repository head Source-Repository this Type: git Location: https://github.com/iconnect/regex.git - Tag: 0.2.0.0 + Tag: 0.2.0.1 @@ -143,7 +143,7 @@ Executable re-gen-cabals -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -171,7 +171,7 @@ Test-Suite re-gen-cabals-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -196,7 +196,7 @@ Executable re-gen-modules -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -220,7 +220,7 @@ Test-Suite re-gen-modules-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -247,7 +247,7 @@ Executable re-include TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -271,7 +271,7 @@ Test-Suite re-include-test TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -292,7 +292,7 @@ Executable re-nginx-log-processor -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -320,7 +320,7 @@ Test-Suite re-nginx-log-processor-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -351,7 +351,7 @@ Executable re-prep TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -377,7 +377,7 @@ Test-Suite re-prep-test TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -403,7 +403,7 @@ Executable re-tests TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -439,7 +439,7 @@ Test-Suite re-tests-test TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -476,7 +476,7 @@ Executable re-tutorial -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -518,7 +518,7 @@ Test-Suite re-tutorial-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -562,7 +562,7 @@ Test-Suite re-tutorial-os-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 diff --git a/lib/regex-examples.cabal b/lib/regex-examples.cabal index 5d9a969..ed7e014 100644 --- a/lib/regex-examples.cabal +++ b/lib/regex-examples.cabal @@ -1,5 +1,5 @@ Name: regex-examples -Version: 0.2.0.0 +Version: 0.2.0.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 @@ -63,70 +63,7 @@ Source-Repository head Source-Repository this Type: git Location: https://github.com/iconnect/regex.git - Tag: 0.2.0.0 - - - -Library - Hs-Source-Dirs: . - Exposed-Modules: - Text.RE - Text.RE.Capture - Text.RE.CaptureID - Text.RE.Edit - Text.RE.Internal.NamedCaptures - Text.RE.Internal.PreludeMacros - Text.RE.Internal.QQ - Text.RE.IsRegex - Text.RE.LineNo - Text.RE.Options - Text.RE.Parsers - Text.RE.PCRE - Text.RE.PCRE.ByteString - Text.RE.PCRE.ByteString.Lazy - Text.RE.PCRE.RE - Text.RE.PCRE.Sequence - Text.RE.PCRE.String - Text.RE.Replace - Text.RE.TDFA - Text.RE.TDFA.ByteString - Text.RE.TDFA.ByteString.Lazy - Text.RE.TDFA.RE - Text.RE.TDFA.Sequence - Text.RE.TDFA.String - Text.RE.TDFA.Text - Text.RE.TDFA.Text.Lazy - Text.RE.TestBench - Text.RE.Tools.Grep - Text.RE.Tools.Lex - Text.RE.Tools.Sed - - Other-Modules: - Text.RE.Internal.AddCaptureNames - - Default-Language: Haskell2010 - GHC-Options: - -Wall - -fwarn-tabs - - Build-depends: - array >= 0.4 - , base >= 4 && < 5 - , base-compat >= 0.6.0 - , bytestring >= 0.10.2.0 - , containers >= 0.4 - , hashable >= 1.2.3.3 - , heredoc >= 0.2.0.0 - , regex-base >= 0.93.2 - , regex-pcre-builtin >= 0.94.4.8.8.35 - , regex-tdfa >= 1.2.0 - , regex-tdfa-text >= 1.0.0.3 - , template-haskell >= 2.7 - , text >= 1.2.0.6 - , time >= 1.4.2 - , time-locale-compat >= 0.1.0.1 - , transformers >= 0.2.2 - , unordered-containers >= 0.2.5.1 + Tag: 0.2.0.1 @@ -144,7 +81,7 @@ Executable re-gen-cabals -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -172,7 +109,7 @@ Test-Suite re-gen-cabals-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -197,7 +134,7 @@ Executable re-gen-modules -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -221,7 +158,7 @@ Test-Suite re-gen-modules-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -248,7 +185,7 @@ Executable re-include TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -272,7 +209,7 @@ Test-Suite re-include-test TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -293,7 +230,7 @@ Executable re-nginx-log-processor -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -321,7 +258,7 @@ Test-Suite re-nginx-log-processor-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -352,7 +289,7 @@ Executable re-prep TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -378,7 +315,7 @@ Test-Suite re-prep-test TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -404,7 +341,7 @@ Executable re-tests TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -440,7 +377,7 @@ Test-Suite re-tests-test TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -477,7 +414,7 @@ Executable re-tutorial -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -519,7 +456,7 @@ Test-Suite re-tutorial-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -563,7 +500,7 @@ Test-Suite re-tutorial-os-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 diff --git a/lib/regex.cabal b/lib/regex.cabal index 0fdb7d6..b0c273f 100644 --- a/lib/regex.cabal +++ b/lib/regex.cabal @@ -1,5 +1,5 @@ Name: regex -Version: 0.2.0.0 +Version: 0.2.0.1 Synopsis: Toolkit for regex-base Description: A Regular Expression Toolkit for regex-base with Compile-time checking of RE syntax, data types for @@ -31,7 +31,7 @@ Source-Repository head Source-Repository this Type: git Location: https://github.com/iconnect/regex.git - Tag: 0.2.0.0 + Tag: 0.2.0.1 diff --git a/lib/version.txt b/lib/version.txt index 2dd5492..c5f28c3 100644 --- a/lib/version.txt +++ b/lib/version.txt @@ -1 +1 @@ -0.2.0.0 \ No newline at end of file +0.2.0.1 \ No newline at end of file diff --git a/regex.cabal b/regex.cabal index 5e54617..44da102 100644 --- a/regex.cabal +++ b/regex.cabal @@ -1,5 +1,5 @@ Name: regex -Version: 0.2.0.0 +Version: 0.2.0.1 Synopsis: Toolkit for regex-base Description: A Regular Expression Toolkit for regex-base with Compile-time checking of RE syntax, data types for @@ -62,7 +62,7 @@ Source-Repository head Source-Repository this Type: git Location: https://github.com/iconnect/regex.git - Tag: 0.2.0.0 + Tag: 0.2.0.1 @@ -143,7 +143,7 @@ Executable re-gen-cabals -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -171,7 +171,7 @@ Test-Suite re-gen-cabals-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -196,7 +196,7 @@ Executable re-gen-modules -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -220,7 +220,7 @@ Test-Suite re-gen-modules-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -247,7 +247,7 @@ Executable re-include TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -271,7 +271,7 @@ Test-Suite re-include-test TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -292,7 +292,7 @@ Executable re-nginx-log-processor -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -320,7 +320,7 @@ Test-Suite re-nginx-log-processor-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -351,7 +351,7 @@ Executable re-prep TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -377,7 +377,7 @@ Test-Suite re-prep-test TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , base >= 4 && < 5 , base-compat >= 0.6.0 , bytestring >= 0.10.2.0 @@ -403,7 +403,7 @@ Executable re-tests TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -439,7 +439,7 @@ Test-Suite re-tests-test TestKit Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -476,7 +476,7 @@ Executable re-tutorial -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -518,7 +518,7 @@ Test-Suite re-tutorial-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 @@ -562,7 +562,7 @@ Test-Suite re-tutorial-os-test -fwarn-tabs Build-depends: - regex == 0.2.0.0 + regex == 0.2.0.1 , array >= 0.4 , base >= 4 && < 5 , base-compat >= 0.6.0 From b107fd30e6411b4d8710f1d2d861872efe255dc7 Mon Sep 17 00:00:00 2001 From: Chris Dornan Date: Mon, 20 Feb 2017 02:26:52 +0000 Subject: [PATCH 5/5] 0.2.0.1 Hackage release tarballs --- releases/regex-0.2.0.1.tar.gz | Bin 0 -> 28679 bytes releases/regex-examples-0.2.0.1.tar.gz | Bin 0 -> 66520 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 releases/regex-0.2.0.1.tar.gz create mode 100644 releases/regex-examples-0.2.0.1.tar.gz diff --git a/releases/regex-0.2.0.1.tar.gz b/releases/regex-0.2.0.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..f06293aa8d53e21247d62f1a0f0e14948ad8e592 GIT binary patch literal 28679 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 literal 0 HcmV?d00001 diff --git a/releases/regex-examples-0.2.0.1.tar.gz b/releases/regex-examples-0.2.0.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..811c8635c7d9e25fa37574e325eaab94f105e44e GIT binary patch literal 66520 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 Wiu~98vre)=lAsy25io9eu>S#{O