<span>
tag generator for rainbow parens.
Plaintext
·
CSS
#lang racket/base
(require racket/format
racket/string)
(require syntax-color/racket-lexer)
(define (lexinate results depth)
(define (make-span depth str)
(format "<span class=\"paren-~a\">~a</span>" depth str))
(define-values (str type paren start end) (racket-lexer (current-input-port)))
(if (eof-object? str)
(string-join (reverse results) "")
(case paren
((\( \[ \{)
(lexinate (cons (make-span depth str) results) (add1 depth)))
((\) \] \})
(lexinate (cons (make-span (sub1 depth) str) results) (sub1 depth)))
(else
(lexinate (cons str results) depth)))))
(module+ main
(display "<code>")
(displayln (lexinate '() 0))
(displayln "</code>"))