#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)) ) )