From 5a2332609cd7bd76ca615b0415972767ab4cbf05 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Fri, 25 Oct 2013 22:19:53 -0500 Subject: [PATCH] adjust scribble lexer so that it uses the new 'text' category instead of just using string this is especially important for doing a good job with indentation --- .../syntax-color/scribble-lexer.rkt | 4 +- .../tests/syntax-color/scribble-lexer.rkt | 83 ++++++++++--------- 2 files changed, 45 insertions(+), 42 deletions(-) diff --git a/pkgs/syntax-color-pkgs/syntax-color-lib/syntax-color/scribble-lexer.rkt b/pkgs/syntax-color-pkgs/syntax-color-lib/syntax-color/scribble-lexer.rkt index 94a8237f76..0afb257102 100644 --- a/pkgs/syntax-color-pkgs/syntax-color-lib/syntax-color/scribble-lexer.rkt +++ b/pkgs/syntax-color-pkgs/syntax-color-lib/syntax-color/scribble-lexer.rkt @@ -214,8 +214,8 @@ ;; Read string up to @, }, or newline (regexp-match? (text-string-rx l) in) (let-values ([(end-line end-col end-pos) (port-next-location in)]) - (values 'string - 'string + (values 'text + 'text #f pos end-pos diff --git a/pkgs/syntax-color-pkgs/syntax-color-test/tests/syntax-color/scribble-lexer.rkt b/pkgs/syntax-color-pkgs/syntax-color-test/tests/syntax-color/scribble-lexer.rkt index e1df21fbd8..9b4eee67cf 100644 --- a/pkgs/syntax-color-pkgs/syntax-color-test/tests/syntax-color/scribble-lexer.rkt +++ b/pkgs/syntax-color-pkgs/syntax-color-test/tests/syntax-color/scribble-lexer.rkt @@ -35,30 +35,33 @@ (pretty-print val (current-error-port)) (eprintf "\n")))) -(define-syntax-rule (test str len-val) - (test* str len-val (syntax-line #'str))) +(define-syntax (test stx) + (syntax-case stx () + [(_ str len-val) + (with-syntax ([line (syntax-line stx)]) + #'(test* str len-val line))])) -(test "x" '((1 string))) -(test "x{}" '((3 string))) +(test "x" '((1 text))) +(test "x{}" '((3 text))) (test "@x" '((1 parenthesis) (1 symbol))) (test "@x str" '((1 parenthesis) (1 symbol) - (4 string))) + (4 text))) (test "@x[] str" '((1 parenthesis) (1 symbol) (1 parenthesis) (1 parenthesis) - (4 string))) + (4 text))) (test "@x[z] str" '((1 parenthesis) (1 symbol) (1 parenthesis) (1 symbol) (1 parenthesis) - (4 string))) + (4 text))) (test "@x[z +1.5] str" '((1 parenthesis) (1 symbol) @@ -67,7 +70,7 @@ (1 white-space) (4 constant) (1 parenthesis) - (4 string))) + (4 text))) (test "@x[z @w{10}] str" '((1 parenthesis) (1 symbol) ; x @@ -77,10 +80,10 @@ (1 parenthesis) (1 symbol) ; w (1 parenthesis) - (2 string) + (2 text) (1 parenthesis) (1 parenthesis) - (4 string))) + (4 text))) (test "@x[a@b]{a}{b}" '((1 parenthesis) (1 symbol) @@ -88,9 +91,9 @@ (3 symbol) (1 parenthesis) (1 parenthesis) - (1 string) + (1 text) (1 parenthesis) - (3 string))) + (3 text))) (test "@x{{}}" '((1 parenthesis) (1 symbol) (1 parenthesis) @@ -101,31 +104,31 @@ (test "@|x|str" '((2 parenthesis) (1 symbol 2) (1 parenthesis 3) - (3 string))) + (3 text))) (test "@|x #|ok|#|str" '((2 parenthesis) (1 symbol 2) (1 white-space 3) (6 comment) (1 parenthesis) - (3 string))) + (3 text))) (test "@| x ; c\n| str" '((2 parenthesis) (1 white-space 2) (1 symbol) (1 white-space) (3 comment) (2 parenthesis) - (4 string))) + (4 text))) (test "@|(a|b|)|str" '((2 parenthesis) (1 parenthesis 2) (4 symbol 3) (1 parenthesis 7) (1 parenthesis 8) - (3 string))) + (3 text))) (test "@#|bad|#x str" '((1 parenthesis) (7 error) (1 symbol) - (4 string))) + (4 text))) (test "@@x" '((1 parenthesis) (1 parenthesis) (1 symbol))) @@ -133,7 +136,7 @@ (1 parenthesis 2) (1 symbol) (1 parenthesis) - (1 string))) + (1 text))) (test "@@x[1 2][3]" '((1 parenthesis) (1 parenthesis) (1 symbol) @@ -147,15 +150,15 @@ (1 parenthesis))) (test "@{1 2}" '((2 parenthesis) - (3 string) + (3 text) (1 parenthesis))) (test "@|=={1 2}==|" '((5 parenthesis) - (3 string) + (3 text) (4 parenthesis))) (test "@'{1 2}" '((1 parenthesis) (1 constant) (1 parenthesis) - (3 string) + (3 text) (1 parenthesis))) (test "@',#,#`|>>{1 2}<<|" '((1 parenthesis) (1 constant) ; , @@ -163,33 +166,33 @@ (2 other) ; #, (2 constant) ; #` (4 parenthesis) - (3 string) + (3 text) (4 parenthesis))) (test "@x|{10}|" '((1 parenthesis) (1 symbol) (2 parenthesis) - (2 string) + (2 text) (2 parenthesis))) (test "@x|{@q}|" '((1 parenthesis) (1 symbol) (2 parenthesis) - (2 string) + (2 text) (2 parenthesis))) (test "@x|!!{@q}!!|" '((1 parenthesis) (1 symbol) (4 parenthesis) - (2 string) + (2 text) (4 parenthesis))) (test "@x|(({@q}))|" '((1 parenthesis) (1 symbol) (4 parenthesis) - (2 string) + (2 text) (4 parenthesis))) (test "@x|<<{a|<<@a[10]}>>|" '((1 parenthesis) (1 symbol) (4 parenthesis) - (1 string) + (1 text) (4 parenthesis) (1 symbol) (1 parenthesis) @@ -199,9 +202,9 @@ (test "@x|{ |{ } }|}|" '((1 parenthesis) (1 symbol) (2 parenthesis) - (1 string) + (1 text) (2 parenthesis) ; |{ - (3 string) + (3 text) (2 parenthesis) ; }| (2 parenthesis))) @@ -211,37 +214,37 @@ (2 other) ; ,@ (3 symbol) (1 parenthesis) - (4 string) + (4 text) (1 parenthesis))) (test "@; 1" '((4 comment))) (test "@; 1\nv" '((4 comment) (1 white-space) - (1 string))) + (1 text))) (test "@;{1}v" '((2 comment) (1 parenthesis) - (1 string) + (1 text) (1 parenthesis) - (1 string))) + (1 text))) (test "@;|{1 }} }|v" '((2 comment) (2 parenthesis) - (5 string) + (5 text) (2 parenthesis) - (1 string))) + (1 text))) -(test "a\n b" '((1 string) +(test "a\n b" '((1 text) (3 white-space) - (1 string))) + (1 text))) (test "@item{A\nB}" '((1 parenthesis) (4 symbol) (1 parenthesis) - (1 string) + (1 text) (1 white-space) - (1 string) + (1 text) (1 parenthesis))) (test "@|()|})|" '((2 parenthesis) (1 parenthesis 2) (1 parenthesis 3) (1 parenthesis 4) - (3 string))) + (3 text)))