regexpr 0.2.9 → 0.3
raw patch · 7 files changed
+41/−36 lines, 7 files
Files
- BUGS.ja.utf-8 +3/−0
- Hidden/ParseRegexStr.hs +4/−4
- Hidden/RegexPRTypes.hs +2/−0
- Hidden/SrcRegActList.hs +1/−1
- Hidden/TestMain.hs +5/−1
- TODO.ja.utf-8 +6/−0
- regexpr.cabal +20/−30
BUGS.ja.utf-8 view
@@ -2,3 +2,6 @@ (?i)と[...]の組み合わせがうまくない。 [...]に関してはどうもうまくない感じがする。 あとで根本的な解決が必要だ。++2008.1.25 Fri.+splitRegexPRでmatchしなかった場合について解決すること。
Hidden/ParseRegexStr.hs view
@@ -26,9 +26,9 @@ parensesList, charClassList ) parseRegexStr :: String -> [RegexAction]-parseRegexStr =- fst . fst . headOrErr "parse error: regex is uncorrect" .- (runParse $ runRegexSrcParser parseRegexStrParser) . (,) []+parseRegexStr src =+ fst . fst . headOrErr ("parse error: regex " ++ show src ++ " is uncorrect") .+ (runParse $ runRegexSrcParser parseRegexStrParser) . (,) [] $ src parseRegexStrParser, parseTokensOr, parseTokens :: RegexSrcParser [RegexAction] parseRegexStrParser = parseTokensOr >>= endOfInput@@ -135,7 +135,7 @@ parseChar = ( spot isAlphaNum ) `mplus` ( token '\\' >> spot isSymbol ) `mplus` ( spot $ selfTest &&& flip notElem "-]" ) `mplus`- ( token '+' ) `mplus`+ ( spot $ flip elem ".+$" ) `mplus` ( token '[' >>= skipRet (still $ parseNot () $ token ':') ) parseCharArea = (parseChar >>= skipRet (token '-')) >..> parseChar
Hidden/RegexPRTypes.hs view
@@ -79,6 +79,8 @@ reverseRegexAction :: RegexAction -> RegexAction reverseRegexAction (Note i ras) = Note i $ reverse $ map reverseRegexAction ras+reverseRegexAction (Parens ras)+ = Parens $ reverse $ map reverseRegexAction ras reverseRegexAction (RegexOr ras1 ras2) = RegexOr (reverse $ map reverseRegexAction ras1) (reverse $ map reverseRegexAction ras2)
Hidden/SrcRegActList.hs view
@@ -19,7 +19,7 @@ selfTest :: Char -> Bool selfTest- = flip elem "\n\f\r\t !\"#%&',-/:;<=>@]_'~" ||| isAlphaNum ||| isBit7On+ = flip elem "\b\n\f\r\t !\"#%&',-/:;<=>@]_'~{}" ||| isAlphaNum ||| isBit7On plusesList :: [ (String, RegexAction -> RegexAction) ] plusesList = [
Hidden/TestMain.hs view
@@ -6,7 +6,7 @@ module Hidden.TestMain where import Test.HUnit-import Text.RegexPR ( matchRegexPR, gsubRegexPR )+import Text.RegexPR ( matchRegexPR, gsubRegexPR, subRegexPR ) main :: IO Counts main = runTestTT $ test suite@@ -203,4 +203,8 @@ gsubRegexPR "c(a)t|(b)ad" "\\+" "Is cat bad? No, cat is not bad" , "aababcabcdabcdeabcdefabcdefg" ~=? gsubRegexPR "." "\\`" "abcdefgh" , "bcdefghcdefghdefghefghfghghh" ~=? gsubRegexPR "." "\\'" "abcdefgh"+ , "abc" ~=? gsubRegexPR "\b" "" "a\bb\bc\b"+ , "abcd" ~=? subRegexPR "[.]" "c" "ab.d"+ , "abcdcfcg" ~=? gsubRegexPR "[.+$]" "c" "ab.d+f$g"+ , Just ( ("", ("abc", "")), [] ) ~=? matchRegexPR "(?<=abc)" "abc" ]
TODO.ja.utf-8 view
@@ -32,3 +32,9 @@ 正規表現のparseに失敗したときのerror messageの改善。 ParseLibを公開できるくらいに洗練する。 homepageの作成。++2008.1.25 Fri.+TODO LIST+ 日本語対応+ Haddock形式に対応+ 日本語のhomepageの作成
regexpr.cabal view
@@ -1,5 +1,5 @@ Name: regexpr-Version: 0.2.9+Version: 0.3 License: GPL License-File: LICENSE Author: Yoshikuni Jujo <PAF01143@nifty.ne.jp>@@ -8,39 +8,29 @@ Homepage: http://homepage3.nifty.com/salamander/regexpr Synopsis: regular expression like Perl/Ruby in Haskell Description:- Regular expression library like Perl/Ruby's regular expressions.+ Regular expression library like Perl and Ruby's regular expressions. This package has a module RegexPR. And RegexPR export functions matchRegexPR and gsubRegexPR. .- matchRegexPR :: String -> Maybe ((String, (String, String)), [(Int, String)])- .- gmatchRegexPR :: String -> [((String, (String, String)), [(Int, String)])]- .- subRegexPR :: String -> String -> String- .- gsubRegexPR :: String -> String -> String- .- splitRegexPR :: String -> String -> [String]- .- Examples:- .- matchRegexPR "ab(cde)f\\1" "kkkabcdefcdefgh" =>- Just (("abcdefcde", ("kkk", "fgh")),[(1,"cde")])- .- matchRegexPR "(?<=hij)abc" "kkkabchijabcde" =>- Just (("abc",("kkkabchij","de")),[])- .- gsubRegexPR "\\G(\\d\\d\\d)" "\\1," "123456 789" => "123,456, 789"- .- subRegexPR "(?<=(.)(.)(.))e" " \\3\\2\\1 " "abcdefg" => "abcd dcb fg"- .- gsubRegexPR "(?ixm) aBc . # comment \n\n" "abc!" "abc\nABCDAbcAbc" =>- "abc!abc!abc!bc"+ > hoge matchRegexPR :: String -> Maybe ((String, (String, String)), [(Int, String)])+ > gmatchRegexPR :: String -> [((String, (String, String)), [(Int, String)])]+ > subRegexPR :: String -> String -> String+ > gsubRegexPR :: String -> String -> String+ > splitRegexPR :: String -> String -> [String] .- gmatchRegexPR "(?=(?<!(?!abc)))abc" "abcdefdefabc" =>- [(("abc", ("", "defdefabc")), []), (("abc", ("defdef", "")), [])]+ Examples .- splitRegexPR "\\s*,\\s*" "a,b ,c\t ,d , e" => ["a","b","c","d","e"]+ > matchRegexPR "ab(cde)f\\1" "kkkabcdefcdefgh" =>+ > Just (("abcdefcde", ("kkk", "fgh")),[(1,"cde")])+ > matchRegexPR "(?<=hij)abc" "kkkabchijabcde" =>+ > Just (("abc",("kkkabchij","de")),[])+ > gsubRegexPR "\\G(\\d\\d\\d)" "\\1," "123456 789" => "123,456, 789"+ > subRegexPR "(?<=(.)(.)(.))e" " \\3\\2\\1 " "abcdefg" => "abcd dcb fg"+ > gsubRegexPR "(?ixm) aBc . # comment \n\n" "abc!" "abc\nABCDAbcAbc" =>+ > "abc!abc!abc!bc"+ > gmatchRegexPR "(?=(?<!(?!abc)))abc" "abcdefdefabc" =>+ > [(("abc", ("", "defdefabc")), []), (("abc", ("defdef", "")), [])]+ > splitRegexPR "\\s*,\\s*" "a,b ,c\t ,d , e" => ["a","b","c","d","e"] Category: Text Build-Depends: base, mtl, HUnit, mtlparse Build-Type: Simple@@ -49,4 +39,4 @@ Hidden.ParseRegexStr, Hidden.SrcRegActList, Hidden.TestMain Extra-source-files: TODO.ja.utf-8, localConfigure, BUGS.ja.utf-8-ghc-options: -Wall -O2 -optl-Wl,-s+ghc-options: -Wall -O2