(fn must [...] (local (ok? result) ...) (if ok? result (error result))) (fn measure [what f] (local start (must (luna.time.now))) (local res (table.pack (f))) (print (.. what ": " (/ (- (must (luna.time.now)) start) 1e6))) (values (table.unpack res))) (fn test-peg [file peg] (local parser (require :parser.parser)) (with-open [f (io.open file "r")] (local contents (f:read :*all)) (local items (parser.match-many contents peg)) (when items (print (.. "count: " (# items)))) (print (fennel.view items))) (os.exit 1)) {: must : measure : test-peg}