X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=blobdiff_plain;f=basis%2Fxmode%2Fmarker%2Fmarker.factor;h=0fbeb2ef2c427724017a581125c7646525a17982;hp=204e108f3f59a4ddbe89a399ffc7b8b190abf4b6;hb=fe9719a1d27939400c466a0d8ef04d8a680018c4;hpb=64c0082cd17d7e32d97e490819075c859326c900 diff --git a/basis/xmode/marker/marker.factor b/basis/xmode/marker/marker.factor index 204e108f3f..0fbeb2ef2c 100644 --- a/basis/xmode/marker/marker.factor +++ b/basis/xmode/marker/marker.factor @@ -103,8 +103,17 @@ M: regexp text-matches? : nth-group-start ( n raw -- n ) [ -1 ] 2dip '[ dup [ 1 + _ group-start ] when ] times ; +: matching-paren ( str -- to ) + 0 swap [ + { + { CHAR: ( [ 1 + ] } + { CHAR: ) [ 1 - ] } + [ drop ] + } case dup zero? + ] find drop nip ; + : nth-group ( n raw -- before nth ) - [ nth-group-start ] keep swap cut CHAR: ) over index 1 + head ; + [ nth-group-start ] keep swap cut dup matching-paren 1 + head ; : match-group-regexp ( regexp n -- skip-regexp match-regexp ) [ [ options>> options>string ] [ raw>> ] bi ] dip swap