[Wisp-cvs] wisp/modules regex.wim,1.51,1.52
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2002-09-04 14:39:41
|
Update of /cvsroot/wisp/wisp/modules In directory usw-pr-cvs1:/tmp/cvs-serv642/modules Modified Files: regex.wim Log Message: Implemented the #/.../ regex syntax. Index: regex.wim =================================================================== RCS file: /cvsroot/wisp/wisp/modules/regex.wim,v retrieving revision 1.51 retrieving revision 1.52 diff -u -d -r1.51 -r1.52 --- regex.wim 26 Aug 2002 16:14:54 -0000 1.51 +++ regex.wim 4 Sep 2002 14:39:08 -0000 1.52 @@ -12,8 +12,14 @@ (use lists strings) (export - regex-match regex-match-positions regex-parse regex-replace - regex-replace* regex-split) + regex regex-match regex-match-positions regex-parse regex-replace + regex-replace* regex-split regex-template) + +(defmacro (regex s) + `(regex-parse ,s)) + +(defmacro (regex-template . data) + `(regex-parse (string-template . ,data))) ;pregexp.scm ;Portable regular expressions for Scheme @@ -124,15 +130,13 @@ (and (< (+ i 1) n) (my c s[(+ i 1)] (case c + ; FIXME: replace \b by \< and \> ((#\b) (list ':wbdry (+ i 2))) ((#\B) (list ':not-wbdry (+ i 2))) ((#\d) (list ':digit (+ i 2))) ((#\D) (list `(:neg-char :digit) (+ i 2))) - ((#\n) (list #\newline (+ i 2))) - ((#\r) (list #\return (+ i 2))) ((#\s) (list ':space (+ i 2))) ((#\S) (list `(:neg-char :space) (+ i 2))) - ((#\t) (list #\tab (+ i 2))) ((#\w) (list ':word (+ i 2))) ((#\W) (list `(:neg-char :word) (+ i 2))) (else (list c (+ i 2))))))) |