You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pollen/debug.rkt

37 lines
1.2 KiB
Racket

#lang racket/base
(require racket/date)
(require racket/string)
(require racket/format)
(provide (all-defined-out))
; todo: contracts, tests, docs
; debug utilities
(define (message . items)
(define (zero-fill str count)
(set! str (~a str))
(if (> (string-length str) count)
str
(string-append (make-string (- count (string-length str)) #\0) str)))
(define (make-date-string)
(define date (current-date))
(define date-fields (map (λ(x) (zero-fill x 2))
(list (date-month date)
(date-day date)
(date-year date)
(modulo (date-hour date) 12)
(date-minute date)
(date-second date)
(if (< (date-hour date) 12) "am" "pm"))))
(apply format "[~a.~a.~a ~a:~a:~a~a]" date-fields))
(displayln (string-join `(,(make-date-string) ,@(map (λ(x)(if (string? x) x (~v x))) items))) (current-error-port)))
; report the current value of the variable, then return it
(define-syntax-rule (report var)
(begin
(message 'var "=" var)
var))