pull/13/head
Sage Gerard 5 years ago
parent d559d568e1
commit e6d64fe7f1

@ -261,7 +261,7 @@
x)))) x))))
;; function to split tag out of txexpr ;; function to split tag out of txexpr
(define+provide+safe deleted-signal symbol? (gensym)) (define deleted-signal #f)
(define+provide+safe (splitf-txexpr tx pred [proc (λ (x) deleted-signal)]) (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)

@ -469,18 +469,12 @@ In practice, most @racket[_txexpr-element]s are strings. But it's unwise to pass
] ]
@deftogether[(
@defthing[deleted-signal symbol?]
@defproc[ @defproc[
(splitf-txexpr (splitf-txexpr
[tx txexpr?] [tx txexpr?]
[pred procedure?] [pred procedure?]
[replace-proc procedure? (λ (x) deleted-signal)]) [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.
@examples[#:eval my-eval @examples[#:eval my-eval
@ -489,7 +483,7 @@ Recursively descend through @racket[_txexpr] and extract all elements that match
(splitf-txexpr tx is-meta?) (splitf-txexpr tx is-meta?)
] ]
Ordinarily, the result of the split operation is to remove the elements that match @racket[_pred]. This happens only when returning @racket[_deleted-signal]. You can change this behavior with the optional @racket[_replace-proc] argument. Ordinarily, the result of the split operation is to remove the elements that match @racket[_pred]. But you can change this behavior with the optional @racket[_replace-proc] argument.
@examples[#:eval my-eval @examples[#:eval my-eval
(define tx '(div "Wonderful day" (meta "weather" "good") "for a walk")) (define tx '(div "Wonderful day" (meta "weather" "good") "for a walk"))

Loading…
Cancel
Save