55 lines
1001 B
Racket
55 lines
1001 B
Racket
#lang racket/base
|
|
|
|
(require "keystore.rkt"
|
|
racket/class
|
|
)
|
|
|
|
(provide keystore%)
|
|
|
|
|
|
(define keystore%
|
|
(class object%
|
|
(init-field
|
|
[file (error "provide a filename using a path, string or use a symbol")]
|
|
)
|
|
|
|
(super-new)
|
|
|
|
(define ksh (ks-open file))
|
|
|
|
(define/public (handle)
|
|
ksh)
|
|
|
|
(define/public (set! key val)
|
|
(ks-set! ksh key val)
|
|
this)
|
|
|
|
(define/public (get key . default-val)
|
|
(if (null? default-val)
|
|
(ks-get ksh key)
|
|
(ks-get ksh key (car default-val))))
|
|
|
|
(define/public (drop! key)
|
|
(ks-drop! ksh key)
|
|
this)
|
|
|
|
(define/public (exists? key)
|
|
(ks-exists? ksh key))
|
|
|
|
(define/public (glob gl)
|
|
(ks-keys-glob ksh gl))
|
|
|
|
(define/public (glob-kv gl)
|
|
(ks-key-values-glob ksh gl))
|
|
|
|
(define/public (keys-glob gl)
|
|
(ks-keys-glob ksh gl))
|
|
|
|
(define/public (keys)
|
|
(ks-keys ksh))
|
|
|
|
(define/public (key-values)
|
|
(ks-key-values ksh))
|
|
)
|
|
)
|