Anonymous avatar Anonymous committed 1b6fb6c

Add enclosed-by

Comments (0)

Files changed (2)

  sequence sequence*
  repeated zero-or-more one-or-more
  any-of all-of none-of
- preceded-by followed-by
+ preceded-by followed-by enclosed-by
  as-string)
 
 (import chicken scheme)
           (and-let* ((value ((car following) input)))
             (loop (cdr following) (cdr value)))))))
 
+(define (enclosed-by open content close)
+  (sequence* ((_ open) (value content) (_ close))
+    (result value)))
+
 (define (->parser object)
   (cond ((procedure? object) object)
         ((char-set? object) (satisfies object))
   (test-parse #\b (all-of (none-of (is #\a)) (is #\b)) "b")
   (test-parse #f (all-of (none-of (is #\a)) (is #\b)) "a"))
 
+(test-group "enclosed-by"
+  (let ((parenthesized (enclosed-by (is #\() (is #\x) (is #\)))))
+    (test-parse #\x parenthesized "(x)")
+    (test-parse #f parenthesized "(x/")
+    (test-parse #f parenthesized "()")))
+
 (test-exit)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.