racket/collects/planet/lang/reader.rkt
2012-03-09 10:34:56 -07:00

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