23 lines
808 B
Racket
23 lines
808 B
Racket
#lang racket/base
|
|
(require racket/gui/base
|
|
racket/class)
|
|
|
|
(provide make-sexp-snipclass%)
|
|
|
|
(define (make-sexp-snipclass% sexp-snip%)
|
|
(class snip-class%
|
|
(define/override (read in)
|
|
(define left-bracket (integer->char (bytes-ref (send in get-bytes) 0)))
|
|
(define right-bracket (integer->char (bytes-ref (send in get-bytes) 0)))
|
|
(define snip-count (send in get-exact))
|
|
(define saved-snips
|
|
(for/list ([in-range snip-count])
|
|
(define classname (bytes->string/utf-8 (send in get-bytes)))
|
|
(define snipclass (send (get-the-snip-class-list) find classname))
|
|
(send snipclass read in)))
|
|
(new sexp-snip%
|
|
[left-bracket left-bracket]
|
|
[right-bracket right-bracket]
|
|
[saved-snips saved-snips]))
|
|
(super-new)))
|