From 628cb0eaf7f31215e6e5086f6f79e2b6cb22ccd3 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Mon, 11 Jul 2016 13:41:28 -0700 Subject: [PATCH] oops, infinite loop --- pollen/pagetree.rkt | 10 ++++++++-- pollen/private/ts.rktd | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pollen/pagetree.rkt b/pollen/pagetree.rkt index 1694f33..99ca641 100644 --- a/pollen/pagetree.rkt +++ b/pollen/pagetree.rkt @@ -53,7 +53,7 @@ (define+provide (validate-pagetree x) (and (txexpr? x) - (let ([pagenodes (pagetree->list x)]) + (let ([pagenodes (pagetree-strict->list x)]) (for ([p (in-list pagenodes)] #:when (not (pagenode? p))) (error 'validate-pagetree (format "\"~a\" is not a valid pagenode" p))) @@ -175,11 +175,17 @@ (check-false (siblings 'invalid-key test-pagetree))) +;; private helper function. +;; only takes pt as input. +;; used by `pagetree?` predicate, so can't use `pagetree?` contract. +(define (pagetree-strict->list pt) + (flatten (cdr pt))) + ;; flatten tree to sequence (define+provide/contract (pagetree->list pt-or-path) ((or/c pagetree? pathish?) . -> . pagenodes?) ; use cdr to get rid of root tag at front - (flatten (cdr (get-pagetree pt-or-path)))) + (pagetree-strict->list (get-pagetree pt-or-path))) (module-test-external (define test-pagetree `(pagetree-main foo bar (one (two three)))) diff --git a/pollen/private/ts.rktd b/pollen/private/ts.rktd index 67bd7af..d4b687a 100644 --- a/pollen/private/ts.rktd +++ b/pollen/private/ts.rktd @@ -1 +1 @@ -1468268397 +1468269688