1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #lang br (require brag/support syntax-color/racket-lexer) (define jsonic-lexer (lexer [(eof) (values lexeme 'eof #f #f #f)] [(:or "@$" "$@") (values lexeme 'parenthesis (if (equal? lexeme "@$") '|(| '|)|) (pos lexeme-start) (pos lexeme-end))])) (define (color-jsonic port offset racket-coloring-mode?) ···) (provide color-jsonic) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #lang br (require brag/support syntax-color/racket-lexer) (define jsonic-lexer (lexer [(eof) (values lexeme 'eof #f #f #f)] [(:or "@$" "$@") (values lexeme 'parenthesis (if (equal? lexeme "@$") '|(| '|)|) (pos lexeme-start) (pos lexeme-end))] [(from/to "//" "\n") (values lexeme 'comment #f (pos lexeme-start) (pos lexeme-end))] [any-char (values lexeme 'string #f (pos lexeme-start) (pos lexeme-end))])) (define (color-jsonic port offset racket-coloring-mode?) ···) (provide color-jsonic) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #lang br (require brag/support syntax-color/racket-lexer) (define jsonic-lexer ···) (define (color-jsonic port offset racket-coloring-mode?) (cond [(or (not racket-coloring-mode?) (equal? (peek-string 2 0 port) "$@")) (define-values (str cat paren start end) (jsonic-lexer port)) (define switch-to-racket-mode (equal? str "@$")) (values str cat paren start end 0 switch-to-racket-mode)] [else ···])) (provide color-jsonic) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #lang br (require brag/support syntax-color/racket-lexer) (define jsonic-lexer ···) (define (color-jsonic port offset racket-coloring-mode?) (cond [(or (not racket-coloring-mode?) (equal? (peek-string 2 0 port) "$@")) (define-values (str cat paren start end) (jsonic-lexer port)) (define switch-to-racket-mode (equal? str "@$")) (values str cat paren start end 0 switch-to-racket-mode)] [else (define-values (str cat paren start end) (racket-lexer port)) (values str cat paren start end 0 #t)])) (provide color-jsonic) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #lang br/quicklang (module reader br (require "reader.rkt") (provide read-syntax get-info) (define (get-info port src-mod src-line src-col src-pos) (define (handle-query key default) (case key [(color-lexer) (dynamic-require 'jsonic/colorer 'color-jsonic)] #;[(drracket:indentation) (dynamic-require 'jsonic/indenter 'indent-jsonic)] #;[(drracket:toolbar-buttons) (dynamic-require 'jsonic/buttons 'button-list)] [else default])) handle-query)) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #lang br (require brag/support syntax-color/racket-lexer racket/contract) (define jsonic-lexer (lexer [(eof) (values lexeme 'eof #f #f #f)] [(:or "@$" "$@") (values lexeme 'parenthesis (if (equal? lexeme "@$") '|(| '|)|) (pos lexeme-start) (pos lexeme-end))] [(from/to "//" "\n") (values lexeme 'comment #f (pos lexeme-start) (pos lexeme-end))] [any-char (values lexeme 'string #f (pos lexeme-start) (pos lexeme-end))])) (define (color-jsonic port offset racket-coloring-mode?) (cond [(or (not racket-coloring-mode?) (equal? (peek-string 2 0 port) "$@")) (define-values (str cat paren start end) (jsonic-lexer port)) (define switch-to-racket-mode (equal? str "@$")) (values str cat paren start end 0 switch-to-racket-mode)] [else (define-values (str cat paren start end) (racket-lexer port)) (values str cat paren start end 0 #t)])) (provide (contract-out [color-jsonic (input-port? exact-nonnegative-integer? boolean? . -> . (values (or/c string? eof-object?) symbol? (or/c symbol? #f) (or/c exact-positive-integer? #f) (or/c exact-positive-integer? #f) exact-nonnegative-integer? boolean?))])) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #lang br (require brag/support syntax-color/racket-lexer racket/contract) (define jsonic-lexer (lexer [(eof) (values lexeme 'eof #f #f #f)] [(:or "@$" "$@") (values lexeme 'parenthesis (if (equal? lexeme "@$") '|(| '|)|) (pos lexeme-start) (pos lexeme-end))] [(from/to "//" "\n") (values lexeme 'comment #f (pos lexeme-start) (pos lexeme-end))] [any-char (values lexeme 'string #f (pos lexeme-start) (pos lexeme-end))])) (define (color-jsonic port offset racket-coloring-mode?) (cond [(or (not racket-coloring-mode?) (equal? (peek-string 2 0 port) "$@")) (define-values (str cat paren start end) (jsonic-lexer port)) (define switch-to-racket-mode (equal? str "@$")) (values str cat paren start end 0 switch-to-racket-mode)] [else (define-values (str cat paren start end) (racket-lexer port)) (values str cat paren start end 0 #t)])) (provide (contract-out [color-jsonic (input-port? exact-nonnegative-integer? boolean? . -> . (values (or/c string? eof-object?) symbol? (or/c symbol? #f) (or/c exact-positive-integer? #f) (or/c exact-positive-integer? #f) exact-nonnegative-integer? boolean?))])) (module+ test (require rackunit) (check-equal? (values->list (color-jsonic (open-input-string "x") 0 #f)) (list "x" 'string #f 1 2 0 #f))) |