packages feed

regex-compat (empty) → 0.71

raw patch · 4 files changed

+213/−0 lines, 4 filesdep +basedep +regex-basedep +regex-posixbuild-type:Customsetup-changed

Dependencies added: base, regex-base, regex-posix

Files

+ LICENSE view
@@ -0,0 +1,31 @@+The Glasgow Haskell Compiler License++Copyright 2004, The University Court of the University of Glasgow. +All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++- Redistributions of source code must retain the above copyright notice,+this list of conditions and the following disclaimer.+ +- Redistributions in binary form must reproduce the above copyright notice,+this list of conditions and the following disclaimer in the documentation+and/or other materials provided with the distribution.+ +- Neither name of the University nor the names of its contributors may be+used to endorse or promote products derived from this software without+specific prior written permission. ++THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF+GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE+UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH+DAMAGE.
+ Setup.hs view
@@ -0,0 +1,6 @@+#!/usr/bin/env runhaskell++-- I usually compile this with "ghc --make -o setup Setup.hs"++import Distribution.Simple(defaultMain)+main = defaultMain
+ Text/Regex.hs view
@@ -0,0 +1,134 @@+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}+-----------------------------------------------------------------------------+-- |+-- Module      :  Text.Regex+-- Copyright   :  (c) Chris Kuklewicz 2006, derived from (c) The University of Glasgow 2001+-- License     :  BSD-style (see the file LICENSE)+-- +-- Maintainer  :  libraries@haskell.org+-- Stability   :  experimental+-- Portability :  non-portable (regex-base needs MPTC+FD)+--+-- Regular expression matching.  Uses the POSIX regular expression+-- interface in "Text.Regex.Posix".+--+---------------------------------------------------------------------------++--+-- Modified by Chris Kuklewicz to be a thin layer over the regex-posix+-- package, and moved into a regex-compat package.+--+module Text.Regex (+    -- * Regular expressions+    Regex,+    mkRegex,+    mkRegexWithOpts,+    matchRegex,+    matchRegexAll,+    subRegex,+    splitRegex+  ) where++import Data.Bits((.|.))+import Text.Regex.Base(RegexMaker(makeRegexOpts),defaultExecOpt,RegexContext(matchM))+import Text.Regex.Posix(Regex,compNewline,compIgnoreCase,compExtended)++-- | Makes a regular expression with the default options (multi-line,+-- case-sensitive).  The syntax of regular expressions is+-- otherwise that of @egrep@ (i.e. POSIX \"extended\" regular+-- expressions).+mkRegex :: String -> Regex+mkRegex s = makeRegexOpts opt defaultExecOpt s+  where opt = compExtended .|. compNewline++-- | Makes a regular expression, where the multi-line and+-- case-sensitive options can be changed from the default settings.+mkRegexWithOpts+   :: String  -- ^ The regular expression to compile+   -> Bool    -- ^ 'True' @\<=>@ @\'^\'@ and @\'$\'@ match the beginning and +	      -- end of individual lines respectively, and @\'.\'@ does /not/+	      -- match the newline character.+   -> Bool    -- ^ 'True' @\<=>@ matching is case-sensitive+   -> Regex   -- ^ Returns: the compiled regular expression++mkRegexWithOpts s single_line case_sensitive+  = let opt = (if single_line then (compNewline .|.) else id) .+              (if case_sensitive then id else (compIgnoreCase .|.)) $+              compExtended+    in makeRegexOpts opt defaultExecOpt s++-- | Match a regular expression against a string+matchRegex+   :: Regex	-- ^ The regular expression+   -> String	-- ^ The string to match against+   -> Maybe [String]	-- ^ Returns: @'Just' strs@ if the match succeeded+			-- (and @strs@ is the list of subexpression matches),+			-- or 'Nothing' otherwise.+matchRegex p str = fmap (\(_,_,_,str) -> str) (matchRegexAll p str)++-- | Match a regular expression against a string, returning more information+-- about the match.+matchRegexAll+   :: Regex	-- ^ The regular expression+   -> String	-- ^ The string to match against+   -> Maybe ( String, String, String, [String] )+		-- ^ Returns: 'Nothing' if the match failed, or:+		-- +		-- >  Just ( everything before match,+		-- >         portion matched,+		-- >         everything after the match,+		-- >         subexpression matches )++matchRegexAll p str = matchM p str++{- | Replaces every occurance of the given regexp with the replacement string.++In the replacement string, @\"\\1\"@ refers to the first substring;+@\"\\2\"@ to the second, etc; and @\"\\0\"@ to the entire match.+@\"\\\\\\\\\"@ will insert a literal backslash.++This is unsafe if the regex matches an empty string.+-}+subRegex :: Regex                          -- ^ Search pattern+      -> String                         -- ^ Input string+      -> String                         -- ^ Replacement text+      -> String                         -- ^ Output string+subRegex _ "" _ = ""+subRegex regexp inp repl =+    let bre = mkRegex "\\\\(\\\\|[0-9]+)"+        lookup _ [] _ = []+        lookup [] _ _ = []+        lookup match repl groups =+            case matchRegexAll bre repl of+                Nothing -> repl+                Just (lead, _, trail, bgroups) ->+                    let newval = if (head bgroups) == "\\"+                                 then "\\"+                                 else let index = (read (head bgroups)) - 1+                                          in+                                          if index == -1+                                             then match+                                             else groups !! index+                        in+                        lead ++ newval ++ lookup match trail groups+        in+        case matchRegexAll regexp inp of+            Nothing -> inp+            Just (lead, match, trail, groups) ->+              lead ++ lookup match repl groups ++ (subRegex regexp trail repl)++{- | Splits a string based on a regular expression.  The regular expression+should identify one delimiter.++This is unsafe if the regex matches an empty string.+-}++splitRegex :: Regex -> String -> [String]+splitRegex _ [] = []+splitRegex delim str =+    case matchRegexAll delim str of+       Nothing -> [str]+       Just (firstline, _, remainder, _) ->+           if remainder == ""+              then firstline : [] : []+              else firstline : splitRegex delim remainder
+ regex-compat.cabal view
@@ -0,0 +1,42 @@+-- ****************************************************************+-- To fix for cabal < 1.1.4 comment out the Extra-Source-Files line+-- ****************************************************************+Name:                   regex-compat+Version:                0.71+-- Cabal-Version:       >=1.1.4+License:                BSD3+License-File:           LICENSE+Copyright:              Copyright (c) 2006, Christopher Kuklewicz+Author:                 Christopher Kuklewicz+Maintainer:             TextRegexLazy@personal.mightyreason.com+Stability:              Seems to work, passes a few tests+Homepage:               http://sourceforge.net/projects/lazy-regex+-- Package-URL:+Synopsis:               Replaces/Enhances Text.Regex+Description:            One module layer over regex-posix to replace Text.Regex+Category:               Text+Tested-With:            GHC+Build-Depends:          regex-base, regex-posix, base+-- Data-Files:+-- Extra-Source-Files:     Text/Regex/Lazy/TestCompat.hs, Text/Regex/Lazy/TestFull.hs, Text/Regex/Impl/TestContext.hs, TestTextRegexLazy.hs, Example.hs, Example2.hs, lazy.html, README, Makefile+-- Extra-Tmp-Files:+Exposed-Modules:        Text.Regex+Buildable:              True+-- Other-Modules:+-- ********* Be backward compatible until 6.4.2 is futher deployed+-- HS-Source-Dirs:         "."+-- Extensions:+GHC-Options:            -Wall -Werror -O2+-- GHC-Options:            -Wall -Werror+-- GHC-Options:            -Wall -ddump-minimal-imports+-- GHC-Prog-Options: +-- Hugs-Options:+-- NHC-Options:+-- Includes:+-- Include-Dirs:+-- C-Sources:+-- Extra-Libraries:+-- Extra-Lib-Dirs:+-- CC-Options:+-- LD-Options:+-- Frameworks: