diff options
Diffstat (limited to 'vendor/cabal-helper-0.8.1.2/tests/bkpregex')
8 files changed, 111 insertions, 0 deletions
diff --git a/vendor/cabal-helper-0.8.1.2/tests/bkpregex/Setup.hs b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/Setup.hs new file mode 100644 index 0000000..9a994af --- /dev/null +++ b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/Setup.hs @@ -0,0 +1,2 @@ +import Distribution.Simple +main = defaultMain diff --git a/vendor/cabal-helper-0.8.1.2/tests/bkpregex/bkpregex.cabal b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/bkpregex.cabal new file mode 100644 index 0000000..5d8d813 --- /dev/null +++ b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/bkpregex.cabal @@ -0,0 +1,29 @@ +name: bkpregex +version: 0.1.0.0 +build-type: Simple +cabal-version: 2.0 + +library str-impls + build-depends: base, bytestring + exposed-modules: Str.String, Str.ByteString + hs-source-dirs: str-impls + +library regex-types + build-depends: base + exposed-modules: Regex.Types + hs-source-dirs: regex-types + +library regex-indef + build-depends: base, regex-types + signatures: Str + exposed-modules: Regex + hs-source-dirs: regex-indef + +executable regex-example + main-is: Main.hs + build-depends: base, regex-indef, regex-types, str-impls + mixins: regex-indef (Regex as Regex.String) + requires (Str as Str.String), + regex-indef (Regex as Regex.ByteString) + requires (Str as Str.ByteString) + hs-source-dirs: regex-example diff --git a/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-example/Main.hs b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-example/Main.hs new file mode 100644 index 0000000..76d2974 --- /dev/null +++ b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-example/Main.hs @@ -0,0 +1,12 @@ +{-# LANGUAGE OverloadedStrings #-} +module Main where + +import Regex.Types +import qualified Regex.String +import qualified Regex.ByteString + +nocs = Rep (Alt (Sym 'a') (Sym 'b')) +onec = Seq nocs (Sym 'c') +evencs = Seq (Rep (Seq onec onec)) nocs +main = print (Regex.String.accept evencs "acc") >> + print (Regex.ByteString.accept evencs "acc") diff --git a/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-indef/Regex.hs b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-indef/Regex.hs new file mode 100644 index 0000000..506566b --- /dev/null +++ b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-indef/Regex.hs @@ -0,0 +1,14 @@ +module Regex where + +import Prelude hiding (null) +import Str +import Regex.Types + +accept :: Reg -> Str -> Bool +accept Eps u = null u +accept (Sym c) u = u == singleton c +accept (Alt p q) u = accept p u || accept q u +accept (Seq p q) u = + or [accept p u1 && accept q u2 | (u1, u2) <- splits u] +accept (Rep r) u = + or [and [accept r ui | ui <- ps] | ps <- parts u] diff --git a/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-indef/Str.hsig b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-indef/Str.hsig new file mode 100644 index 0000000..23bfb8c --- /dev/null +++ b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-indef/Str.hsig @@ -0,0 +1,9 @@ +signature Str where + +data Str +instance Eq Str + +null :: Str -> Bool +singleton :: Char -> Str +splits :: Str -> [(Str, Str)] +parts :: Str -> [[Str]] diff --git a/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-types/Regex/Types.hs b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-types/Regex/Types.hs new file mode 100644 index 0000000..2900749 --- /dev/null +++ b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/regex-types/Regex/Types.hs @@ -0,0 +1,7 @@ +module Regex.Types where + +data Reg = Eps + | Sym Char + | Alt Reg Reg + | Seq Reg Reg + | Rep Reg diff --git a/vendor/cabal-helper-0.8.1.2/tests/bkpregex/str-impls/Str/ByteString.hs b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/str-impls/Str/ByteString.hs new file mode 100644 index 0000000..cd49fed --- /dev/null +++ b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/str-impls/Str/ByteString.hs @@ -0,0 +1,17 @@ +module Str.ByteString(module Data.ByteString.Char8, module Str.ByteString) where + +import Prelude hiding (length, null, splitAt) +import Data.ByteString.Char8 +import Data.ByteString + +type Str = ByteString + +splits :: Str -> [(Str, Str)] +splits s = fmap (\n -> splitAt n s) [0..length s] + +parts :: Str -> [[Str]] +parts s | null s = [[]] + | otherwise = do + n <- [1..length s] + let (l, r) = splitAt n s + fmap (l:) (parts r) diff --git a/vendor/cabal-helper-0.8.1.2/tests/bkpregex/str-impls/Str/String.hs b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/str-impls/Str/String.hs new file mode 100644 index 0000000..bba89de --- /dev/null +++ b/vendor/cabal-helper-0.8.1.2/tests/bkpregex/str-impls/Str/String.hs @@ -0,0 +1,21 @@ +module Str.String where + +import Prelude hiding (null) +import qualified Prelude as P + +type Str = String + +null :: Str -> Bool +null = P.null + +singleton :: Char -> Str +singleton c = [c] + +splits :: Str -> [(Str, Str)] +splits [] = [([], [])] +splits (c:cs) = ([], c:cs):[(c:s1,s2) | (s1,s2) <- splits cs] + +parts :: Str -> [[Str]] +parts [] = [[]] +parts [c] = [[[c]]] +parts (c:cs) = concat [[(c:p):ps, [c]:p:ps] | p:ps <- parts cs] |