32 lines
885 B
Racket
32 lines
885 B
Racket
#lang racket/base
|
|
(require syntax/module-reader
|
|
"../resolver.rkt")
|
|
|
|
(provide (rename-out [planet-read read]
|
|
[planet-read-syntax read-syntax]
|
|
[planet-get-info get-info]))
|
|
|
|
(define (str->spec str)
|
|
(let ([str (bytes->string/latin-1 str)])
|
|
(if (module-path? `(planet ,(string->symbol str)))
|
|
(vector `(submod (planet ,(string->symbol str)) reader)
|
|
`(planet ,(string->symbol (string-append str "/lang/reader"))))
|
|
#f)))
|
|
|
|
(define-values (planet-read planet-read-syntax real-planet-get-info)
|
|
(make-meta-reader
|
|
'planet
|
|
"planet path"
|
|
str->spec
|
|
values
|
|
values
|
|
values))
|
|
|
|
(define op (current-output-port))
|
|
|
|
(define (planet-get-info inport module-path line col pos)
|
|
(parameterize ([install? #f]
|
|
[download? #f])
|
|
(real-planet-get-info inport module-path line col pos)))
|
|
|