From: John Benediktsson Date: Fri, 12 Aug 2022 06:06:38 +0000 (-0700) Subject: xmode.marker: adding a better matching paren finder X-Git-Tag: 0.99~1135 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=fe9719a1d27939400c466a0d8ef04d8a680018c4 xmode.marker: adding a better matching paren finder --- 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