Removing regexp.matchers vocab, merged into regexp
parent
e97e1c8003
commit
33822922d4
|
@ -1,59 +0,0 @@
|
||||||
! Copyright (C) 2008, 2009 Daniel Ehrenberg, Doug Coleman.
|
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
|
||||||
USING: kernel sequences math splitting make fry locals math.ranges
|
|
||||||
accessors arrays ;
|
|
||||||
IN: regexp.matchers
|
|
||||||
|
|
||||||
! For now, a matcher is just something with a method to do the
|
|
||||||
! equivalent of match.
|
|
||||||
|
|
||||||
GENERIC: match-index-from ( i string matcher -- index/f )
|
|
||||||
|
|
||||||
: match-index-head ( string matcher -- index/f )
|
|
||||||
[ 0 ] 2dip match-index-from ;
|
|
||||||
|
|
||||||
: match-slice ( i string matcher -- slice/f )
|
|
||||||
[ 2dup ] dip match-index-from
|
|
||||||
[ swap <slice> ] [ 2drop f ] if* ;
|
|
||||||
|
|
||||||
: matches? ( string matcher -- ? )
|
|
||||||
dupd match-index-head
|
|
||||||
[ swap length = ] [ drop f ] if* ;
|
|
||||||
|
|
||||||
: match-from ( i string matcher -- slice/f )
|
|
||||||
[ [ length [a,b) ] keep ] dip
|
|
||||||
'[ _ _ match-slice ] map-find drop ;
|
|
||||||
|
|
||||||
: match-head ( str matcher -- slice/f )
|
|
||||||
[ 0 ] 2dip match-from ;
|
|
||||||
|
|
||||||
<PRIVATE
|
|
||||||
|
|
||||||
: next-match ( i string matcher -- i match/f )
|
|
||||||
match-from [ dup [ to>> ] when ] keep ;
|
|
||||||
|
|
||||||
PRIVATE>
|
|
||||||
|
|
||||||
:: all-matches ( string matcher -- seq )
|
|
||||||
0 [ dup ] [ string matcher next-match ] produce nip but-last ;
|
|
||||||
|
|
||||||
: count-matches ( string matcher -- n )
|
|
||||||
all-matches length ;
|
|
||||||
|
|
||||||
<PRIVATE
|
|
||||||
|
|
||||||
:: split-slices ( string slices -- new-slices )
|
|
||||||
slices [ to>> ] map 0 prefix
|
|
||||||
slices [ from>> ] map string length suffix
|
|
||||||
[ string <slice> ] 2map ;
|
|
||||||
|
|
||||||
PRIVATE>
|
|
||||||
|
|
||||||
: re-split1 ( string matcher -- before after/f )
|
|
||||||
dupd match-head [ 1array split-slices first2 ] [ f ] if* ;
|
|
||||||
|
|
||||||
: re-split ( string matcher -- seq )
|
|
||||||
dupd all-matches split-slices ;
|
|
||||||
|
|
||||||
: re-replace ( string matcher replacement -- result )
|
|
||||||
[ re-split ] dip join ;
|
|
Loading…
Reference in New Issue