diff --git a/components/prism-scheme.js b/components/prism-scheme.js index da12d761b9..13a0f6d59b 100644 --- a/components/prism-scheme.js +++ b/components/prism-scheme.js @@ -17,7 +17,7 @@ Prism.languages.scheme = { lookbehind: true }, 'number': { - pattern: /([\s()])[-+]?\d*\.?\d+(?:\s*[-+]\s*\d*\.?\d+i)?\b/, + pattern: /([\s()])[-+]?(?:\d+\/\d+|\d*\.?\d+(?:\s*[-+]\s*\d*\.?\d+i)?)\b/, lookbehind: true }, 'boolean': /#[tf]/, diff --git a/components/prism-scheme.min.js b/components/prism-scheme.min.js index b27a920dd5..04bc6c1943 100644 --- a/components/prism-scheme.min.js +++ b/components/prism-scheme.min.js @@ -1 +1 @@ -Prism.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"|'[^()#'\s]+/,greedy:!0},character:{pattern:/#\\(?:[ux][a-fA-F\d]+|[a-zA-Z]+|\S)/,alias:"string"},keyword:{pattern:/(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)(?=[()\s])/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)(?=[()\s])/,lookbehind:!0},number:{pattern:/([\s()])[-+]?\d*\.?\d+(?:\s*[-+]\s*\d*\.?\d+i)?\b/,lookbehind:!0},boolean:/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)(?=\s|$)/,lookbehind:!0},function:{pattern:/(\()[^()'\s]+(?=[()\s)]|$)/,lookbehind:!0},punctuation:/[()']/}; \ No newline at end of file +Prism.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"|'[^()#'\s]+/,greedy:!0},character:{pattern:/#\\(?:[ux][a-fA-F\d]+|[a-zA-Z]+|\S)/,alias:"string"},keyword:{pattern:/(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)(?=[()\s])/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)(?=[()\s])/,lookbehind:!0},number:{pattern:/([\s()])[-+]?(?:\d+\/\d+|\d*\.?\d+(?:\s*[-+]\s*\d*\.?\d+i)?)\b/,lookbehind:!0},boolean:/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)(?=\s|$)/,lookbehind:!0},function:{pattern:/(\()[^()'\s]+(?=[()\s)]|$)/,lookbehind:!0},punctuation:/[()']/}; \ No newline at end of file diff --git a/tests/languages/scheme/number_feature.test b/tests/languages/scheme/number_feature.test index dfd7dcc8cf..bdd2af45a5 100644 --- a/tests/languages/scheme/number_feature.test +++ b/tests/languages/scheme/number_feature.test @@ -1,5 +1,6 @@ (foo 42) (foo 3.14159) +(foo 8/3) (foo 3+4i) (foo 2.5+0.0i) (foo 3+0i) @@ -9,6 +10,7 @@ [ ["punctuation", "("], ["function", "foo"], ["number", "42"], ["punctuation", ")"], ["punctuation", "("], ["function", "foo"], ["number", "3.14159"], ["punctuation", ")"], + ["punctuation", "("], ["function", "foo"], ["number", "8/3"], ["punctuation", ")"], ["punctuation", "("], ["function", "foo"], ["number", "3+4i"], ["punctuation", ")"], ["punctuation", "("], ["function", "foo"], ["number", "2.5+0.0i"], ["punctuation", ")"], ["punctuation", "("], ["function", "foo"], ["number", "3+0i"], ["punctuation", ")"] @@ -16,4 +18,4 @@ ---------------------------------------------------- -Checks for numbers and complex numbers. \ No newline at end of file +Checks for numbers, rational numbers, and complex numbers.