-
This commit is contained in:
@@ -2,7 +2,12 @@
|
||||
|
||||
(require racket/string
|
||||
racket/port
|
||||
racket/contract
|
||||
json
|
||||
(prefix-in g: gregor)
|
||||
(prefix-in g: gregor/time)
|
||||
gregor-utils
|
||||
racket-sprintf
|
||||
)
|
||||
|
||||
(provide while
|
||||
@@ -14,10 +19,19 @@
|
||||
fromJson
|
||||
mk-js-array
|
||||
js-code
|
||||
kv-1
|
||||
kv-2
|
||||
make-kv
|
||||
kv?
|
||||
list-of-kv?
|
||||
list-of-symbol?
|
||||
list-of?
|
||||
string->time
|
||||
time->string
|
||||
string->date
|
||||
date->string
|
||||
string->datetime
|
||||
datetime->string
|
||||
)
|
||||
|
||||
(define-syntax while
|
||||
@@ -108,6 +122,22 @@
|
||||
(and (list? e) (= (length e) 2) (symbol? (car e)))
|
||||
(and (pair? e) (symbol? (car e)))))
|
||||
|
||||
(define/contract (kv-1 e)
|
||||
(-> kv? symbol?)
|
||||
(car e))
|
||||
|
||||
(define/contract (kv-2 e)
|
||||
(-> kv? any/c)
|
||||
(if (list? e)
|
||||
(cadr e)
|
||||
(cdr e)))
|
||||
|
||||
(define/contract (make-kv k v)
|
||||
(-> symbol? any/c kv?)
|
||||
(if (list? v)
|
||||
(list k v)
|
||||
(cons k v)))
|
||||
|
||||
(define (list-of? pred? l)
|
||||
(define (all-pred? l)
|
||||
(if (null? l)
|
||||
@@ -124,4 +154,44 @@
|
||||
|
||||
(define (list-of-symbol? l)
|
||||
(list-of? symbol? l))
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Date / Time conversion
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define (string->time s)
|
||||
(with-handlers ([exn:fail?
|
||||
(λ (e) (g:parse-time s "HH:mm"))])
|
||||
(g:parse-time s "HH:mm:ss")))
|
||||
|
||||
(define (time->string t)
|
||||
(unless (or (g:time? t) (g:datetime? t) (g:moment? t))
|
||||
(error "set! - gregor time?, moment? or datetime? expected"))
|
||||
(sprintf "%02d:%02d:%02d" (g:->hours t) (g:->minutes t) (g:->seconds t)))
|
||||
|
||||
(define (string->datetime s)
|
||||
(with-handlers ([exn:fail?
|
||||
(λ (e) (g:parse-moment s "yyyy-MM-dd'T'HH:mm:ss"))])
|
||||
(g:parse-moment s "yyyy-MM-dd'T'HH:mm")))
|
||||
|
||||
(define (datetime->string dt)
|
||||
(when (racket-date? dt)
|
||||
(datetime->string date->moment dt))
|
||||
(unless (or (g:datetime? dt) (g:moment? dt) (g:date? dt) (g:time? dt))
|
||||
(error "set! - gregor time? , date?, datetime? or moment? expected"))
|
||||
(sprintf "%04d:%02d:%02dT%02d:%02d:%02d"
|
||||
(g:->year dt) (g:->month dt) (g:->day dt)
|
||||
(g:->hours dt) (g:->minutes dt) (g:->seconds dt))
|
||||
)
|
||||
|
||||
(define (string->date d)
|
||||
(g:parse-date d "yyyy-MM-dd"))
|
||||
|
||||
(define (date->string d)
|
||||
(when (racket-date? d)
|
||||
(date->string (date->moment d)))
|
||||
(unless (or (g:date? d) (g:moment? d) (g:datetime? d))
|
||||
(error "set! - gregor date expected"))
|
||||
(sprintf "%04d-%02d-%02d" (g:->year d) (g:->month d) (g:->day d)))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user