serialize bluebox tables
Typically, the bluebox table includes keys that have interned parts, so serialization can save space both on disk and in memory when the bluebox information is reloaded.
This commit is contained in:
parent
e4e4d544f5
commit
693ff33bfc
|
@ -4,6 +4,7 @@
|
||||||
racket/class
|
racket/class
|
||||||
racket/math
|
racket/math
|
||||||
racket/runtime-path
|
racket/runtime-path
|
||||||
|
racket/serialize
|
||||||
data/interval-map
|
data/interval-map
|
||||||
setup/dirs
|
setup/dirs
|
||||||
images/icons/misc
|
images/icons/misc
|
||||||
|
@ -43,7 +44,7 @@
|
||||||
(define pos (file-position port))
|
(define pos (file-position port))
|
||||||
(list x
|
(list x
|
||||||
(+ (string->number first-line) pos)
|
(+ (string->number first-line) pos)
|
||||||
(read port))))))))
|
(deserialize (read port)))))))))
|
||||||
|
|
||||||
(define files->tag->offset #f)
|
(define files->tag->offset #f)
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
(prefix-in text: "text-render.rkt")
|
(prefix-in text: "text-render.rkt")
|
||||||
"base-render.rkt"
|
"base-render.rkt"
|
||||||
"core.rkt"
|
"core.rkt"
|
||||||
file/convertible)
|
file/convertible
|
||||||
|
racket/serialize)
|
||||||
(provide override-render-mixin-single
|
(provide override-render-mixin-single
|
||||||
override-render-mixin-multi)
|
override-render-mixin-multi)
|
||||||
|
|
||||||
|
@ -23,7 +24,7 @@
|
||||||
[the-ri ri]
|
[the-ri ri]
|
||||||
[the-text-p p])
|
[the-text-p p])
|
||||||
(r-part part 'block index-table))
|
(r-part part 'block index-table))
|
||||||
(define table-str (format "~s\n" index-table))
|
(define table-str (format "~s\n" (serialize index-table)))
|
||||||
(define cb.rktd
|
(define cb.rktd
|
||||||
(cond
|
(cond
|
||||||
[multi?
|
[multi?
|
||||||
|
@ -135,8 +136,10 @@
|
||||||
|
|
||||||
(define-values (after-line _3 _4) (port-next-location text-p))
|
(define-values (after-line _3 _4) (port-next-location text-p))
|
||||||
(define txt-loc (cons before-position (- after-line before-line)))
|
(define txt-loc (cons before-position (- after-line before-line)))
|
||||||
|
(define ri (the-ri))
|
||||||
(for ([(k v) (in-hash ents)])
|
(for ([(k v) (in-hash ents)])
|
||||||
(hash-set! index-table k (cons txt-loc (hash-ref index-table k '())))))
|
(let ([k (tag-key k ri)])
|
||||||
|
(hash-set! index-table k (cons txt-loc (hash-ref index-table k '()))))))
|
||||||
|
|
||||||
(define (r-blockss+cont blockss mode index-table)
|
(define (r-blockss+cont blockss mode index-table)
|
||||||
(for ([blocks (in-list blockss)])
|
(for ([blocks (in-list blockss)])
|
||||||
|
@ -172,7 +175,7 @@
|
||||||
(when (pair? mode)
|
(when (pair? mode)
|
||||||
(define ents (cdr mode))
|
(define ents (cdr mode))
|
||||||
(define key (index-element-tag element))
|
(define key (index-element-tag element))
|
||||||
(hash-set! ents key #t)))
|
(hash-set! ents (tag-key key (the-ri)) #t)))
|
||||||
(r-content (element-content element) mode index-table))
|
(r-content (element-content element) mode index-table))
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user