bkyk8rc3zvpnsf5inmcqq4n3k98cv6hj-my-site-hyper-literate-git.test.suzanne.soy-0.0.1

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

docs.rkt (3534B)


      1 #lang racket/base
      2 
      3 ;; Use text renderer to check some Scribble functionality
      4 
      5 (require scribble/base-render
      6          (prefix-in text: scribble/text-render)
      7          (prefix-in html: scribble/html-render)
      8          (prefix-in latex: scribble/latex-render)
      9          (prefix-in markdown: scribble/markdown-render)
     10          racket/file 
     11          racket/class
     12          racket/runtime-path
     13          tests/eli-tester)
     14 
     15 (define-runtime-path source-dir "docs")
     16 (define work-dir (build-path (find-system-path 'temp-dir)
     17                              "scribble-docs-tests"))
     18 
     19 (define (build-doc render% src-file dest-file)
     20   (let* ([renderer (new render% [dest-dir work-dir])]
     21          [docs     (list (if (module-declared? `(submod ,src-file doc) #t)
     22                              (dynamic-require `(submod ,src-file doc) 'doc)
     23                              (dynamic-require src-file 'doc)))]
     24          [fns      (list (build-path work-dir dest-file))]
     25          [fp       (send renderer traverse docs fns)]
     26          [info     (send renderer collect  docs fns fp)]
     27          [r-info   (send renderer resolve  docs fns info)])
     28     (send renderer render docs fns r-info)
     29     (send renderer get-undefined r-info)))
     30 
     31 (define (build-text-doc src-file dest-file)
     32   (build-doc (text:render-mixin render%) src-file dest-file))
     33 
     34 (define (build-html-doc src-file dest-file)
     35   (build-doc (html:render-mixin render%) src-file dest-file))
     36 
     37 (define (build-htmls-doc src-file dest-file)
     38   (build-doc (html:render-multi-mixin (html:render-mixin render%)) src-file dest-file))
     39 
     40 (define (build-latex-doc src-file dest-file)
     41   (build-doc (latex:render-mixin render%) src-file dest-file))
     42 
     43 (define (build-markdown-doc src-file dest-file)
     44   (build-doc (markdown:render-mixin render%) src-file dest-file))
     45 
     46 (provide docs-tests)
     47 (module+ main (docs-tests))
     48 (module+ test (docs-tests))
     49 (define (docs-tests)
     50   (when (or (file-exists? work-dir) (directory-exists? work-dir))
     51     (delete-directory/files work-dir))
     52   (dynamic-wind
     53     (λ() (make-directory work-dir))
     54     (λ()
     55       (define files (map path-element->string (directory-list source-dir)))
     56       (test do
     57         (for ([scrbl (in-list files)]
     58               #:when (regexp-match? #rx"\\.scrbl$" scrbl)
     59               [txt   (in-value (regexp-replace #rx"\\.scrbl$" scrbl ".txt"))]
     60               #:when (member txt files))
     61           ;; (printf "Testing ~s -> ~s\n" scrbl txt)
     62           (define src-file (build-path source-dir scrbl))
     63           (define expect-file (build-path source-dir txt))
     64           (define generated-file (build-path work-dir "gen.txt"))
     65           (define (contents file)
     66             (regexp-replace #rx"\n+$" (file->string file) ""))
     67           (define undefineds (build-text-doc src-file "gen.txt"))
     68           (for ([u (in-list undefineds)])
     69             (when (eq? 'tech (car u))
     70               (test #:failure-message
     71                     (format "undefined tech: ~e" u)
     72                     #f)))
     73           (test #:failure-message
     74                 (format
     75                  "mismatch for: \"~a\", expected text in: \"~a\", got:\n~a"
     76                  scrbl txt (contents generated-file))
     77                 (string=? (contents expect-file) (contents generated-file)))
     78 
     79           ;; Make sure the document at least renders in other modes:
     80           (void (build-html-doc src-file "gen.html"))
     81           (void (build-htmls-doc src-file "gen"))
     82           (void (build-latex-doc src-file "gen.tex"))
     83           (void (build-markdown-doc src-file "gen.md")))))
     84     (λ() (delete-directory/files work-dir))))