[Pkg-haskell-commits] r985 - in /packages/haskell-regex-compat: ./ branches/ branches/upstream/ branches/upstream/current/ branches/upstream/current/Text/

arjan at users.alioth.debian.org arjan at users.alioth.debian.org
Sat Jan 19 15:56:49 UTC 2008


Author: arjan
Date: Sat Jan 19 15:56:49 2008
New Revision: 985

URL: http://svn.debian.org/wsvn/pkg-haskell/?sc=1&rev=985
Log:
[svn-inject] Installing original source of haskell-regex-compat

Added:
    packages/haskell-regex-compat/
    packages/haskell-regex-compat/branches/
    packages/haskell-regex-compat/branches/upstream/
    packages/haskell-regex-compat/branches/upstream/current/
    packages/haskell-regex-compat/branches/upstream/current/LICENSE
    packages/haskell-regex-compat/branches/upstream/current/Setup.hs
    packages/haskell-regex-compat/branches/upstream/current/Text/
    packages/haskell-regex-compat/branches/upstream/current/Text/Regex.hs
    packages/haskell-regex-compat/branches/upstream/current/regex-compat.cabal

Added: packages/haskell-regex-compat/branches/upstream/current/LICENSE
URL: http://svn.debian.org/wsvn/pkg-haskell/packages/haskell-regex-compat/branches/upstream/current/LICENSE?rev=985&op=file
==============================================================================
--- packages/haskell-regex-compat/branches/upstream/current/LICENSE (added)
+++ packages/haskell-regex-compat/branches/upstream/current/LICENSE Sat Jan 19 15:56:49 2008
@@ -1,0 +1,12 @@
+This modile is under this "3 clause" BSD license:
+
+Copyright (c) 2007, Christopher Kuklewicz
+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.
+    * The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Added: packages/haskell-regex-compat/branches/upstream/current/Setup.hs
URL: http://svn.debian.org/wsvn/pkg-haskell/packages/haskell-regex-compat/branches/upstream/current/Setup.hs?rev=985&op=file
==============================================================================
--- packages/haskell-regex-compat/branches/upstream/current/Setup.hs (added)
+++ packages/haskell-regex-compat/branches/upstream/current/Setup.hs Sat Jan 19 15:56:49 2008
@@ -1,0 +1,6 @@
+#!/usr/bin/env runhaskell
+
+-- I usually compile this with "ghc --make -o setup Setup.hs"
+
+import Distribution.Simple(defaultMain)
+main = defaultMain

Added: packages/haskell-regex-compat/branches/upstream/current/Text/Regex.hs
URL: http://svn.debian.org/wsvn/pkg-haskell/packages/haskell-regex-compat/branches/upstream/current/Text/Regex.hs?rev=985&op=file
==============================================================================
--- packages/haskell-regex-compat/branches/upstream/current/Text/Regex.hs (added)
+++ packages/haskell-regex-compat/branches/upstream/current/Text/Regex.hs Sat Jan 19 15:56:49 2008
@@ -1,0 +1,138 @@
+{-# 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 at 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,RegexLike(matchOnceText),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 does not advance if the regex matches an empty string.  This
+misfeature is here to match the behavior of the the original
+Text.Regex API.
+-}
+subRegex :: Regex                          -- ^ Search pattern
+      -> String                         -- ^ Input string
+      -> String                         -- ^ Replacement text
+      -> String                         -- ^ Output string
+subRegex _ "" _ = ""
+subRegex regexp inp repl =
+  let -- bre matches a backslash then capture either a backslash or some digits
+      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 :: Int
+                            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 does not advance and produces an infinite list of [] if the regex
+matches an empty string.  This misfeature is here to match the
+behavior of the the original Text.Regex API.
+-}
+
+splitRegex :: Regex -> String -> [String]
+splitRegex _ [] = []
+splitRegex delim strIn = loop strIn where
+  loop str = case matchOnceText delim str of
+                Nothing -> [str]
+                Just (firstline, _, remainder) ->
+                  if null remainder
+                    then [firstline,""]
+                    else firstline : loop remainder

Added: packages/haskell-regex-compat/branches/upstream/current/regex-compat.cabal
URL: http://svn.debian.org/wsvn/pkg-haskell/packages/haskell-regex-compat/branches/upstream/current/regex-compat.cabal?rev=985&op=file
==============================================================================
--- packages/haskell-regex-compat/branches/upstream/current/regex-compat.cabal (added)
+++ packages/haskell-regex-compat/branches/upstream/current/regex-compat.cabal Sat Jan 19 15:56:49 2008
@@ -1,0 +1,44 @@
+Name:                   regex-compat
+Version:                0.91
+Cabal-Version:          >=1.2
+License:                BSD3
+License-File:           LICENSE
+Copyright:              Copyright (c) 2006, Christopher Kuklewicz
+Author:                 Christopher Kuklewicz
+Maintainer:             TextRegexLazy at personal.mightyreason.com
+Stability:              Seems to work, passes a few tests
+Homepage:               http://sourceforge.net/projects/lazy-regex
+Package-URL:            http://darcs.haskell.org/packages/regex-unstable/regex-compat/
+Synopsis:               Replaces/Enhances Text.Regex
+Description:            One module layer over regex-posix to replace Text.Regex
+Category:               Text
+Tested-With:            GHC
+flag splitBase
+  description: Choose the new smaller, split-up base package.
+library
+  if flag(splitBase)
+    Build-Depends:      base >= 3.0, regex-base >= 0.93, regex-posix >= 0.93
+  else
+    Build-Depends:      base < 3.0,  regex-base >= 0.93, regex-posix >= 0.93
+  -- Data-Files:
+  -- Extra-Source-Files:
+  -- Extra-Tmp-Files:
+  Exposed-Modules:        Text.Regex
+  Buildable:              True
+  -- Other-Modules:
+  -- HS-Source-Dirs:         "."
+  Extensions:             MultiParamTypeClasses, FunctionalDependencies
+  GHC-Options:            -Wall -O2
+  -- GHC-Options:            -Wall -Werror -O2
+  -- 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:




More information about the Pkg-haskell-commits mailing list