omit `deleted-signal` & correct docs (#13)

pull/15/head
Sage Gerard 5 years ago committed by Matthew Butterick
parent d3f16ceebe
commit a4d36b963f

@ -261,8 +261,7 @@
x)))) x))))
;; function to split tag out of txexpr ;; function to split tag out of txexpr
(define deleted-signal (gensym)) (define+provide+safe (splitf-txexpr tx pred [proc (λ (x) #f)])
(define+provide+safe (splitf-txexpr tx pred [proc (λ (x) deleted-signal)])
((txexpr? procedure?) (procedure?) . ->* . (values txexpr? txexpr-elements?)) ((txexpr? procedure?) (procedure?) . ->* . (values txexpr? txexpr-elements?))
(unless (txexpr? tx) (unless (txexpr? tx)
(raise-argument-error 'splitf-txexpr "txexpr?" tx)) (raise-argument-error 'splitf-txexpr "txexpr?" tx))
@ -273,8 +272,7 @@
(set! matches (cons x matches)) (set! matches (cons x matches))
(proc x)] (proc x)]
[(? txexpr?) (let-values ([(tag attrs elements) (txexpr->values x)]) [(? txexpr?) (let-values ([(tag attrs elements) (txexpr->values x)])
(txexpr-unsafe tag attrs (filter-not (λ (e) (eq? e deleted-signal)) (txexpr-unsafe tag attrs (filter values (map extract! elements))))]
(map extract! elements))))]
[_ x])) [_ x]))
(define tx-extracted (extract! tx)) ;; do this first to fill matches (define tx-extracted (extract! tx)) ;; do this first to fill matches
(values tx-extracted (reverse matches))) (values tx-extracted (reverse matches)))

@ -473,7 +473,7 @@ In practice, most @racket[_txexpr-element]s are strings. But it's unwise to pass
(splitf-txexpr (splitf-txexpr
[tx txexpr?] [tx txexpr?]
[pred procedure?] [pred procedure?]
[replace-proc procedure? (λ (x) null)]) [replace-proc procedure? (λ (x) #f)])
(values txexpr? (listof txexpr-element?))] (values txexpr? (listof txexpr-element?))]
Recursively descend through @racket[_txexpr] and extract all elements that match @racket[_pred]. Returns two values: a @racket[_txexpr] with the matching elements removed, and the list of matching elements. Sort of esoteric, but I've needed it more than once, so here it is. Recursively descend through @racket[_txexpr] and extract all elements that match @racket[_pred]. Returns two values: a @racket[_txexpr] with the matching elements removed, and the list of matching elements. Sort of esoteric, but I've needed it more than once, so here it is.

Loading…
Cancel
Save