From 4cdc28fc5b1640ea781a6086bd79c91f399068b0 Mon Sep 17 00:00:00 2001 From: Yiyang Hao Date: Sun, 16 Aug 2020 00:27:55 +0800 Subject: [PATCH 1/3] fix punctuation not labeled in function definition in TypeScript --- pygments/lexers/javascript.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pygments/lexers/javascript.py b/pygments/lexers/javascript.py index 48c6aafda6..f11a4a310d 100644 --- a/pygments/lexers/javascript.py +++ b/pygments/lexers/javascript.py @@ -508,7 +508,7 @@ class TypeScriptLexer(RegexLexer): (r'(super)(\s*)(\([\w,?.$\s]+\s*\))', bygroups(Keyword.Reserved, Text), 'slashstartsregex'), # Match stuff like: function() {...} - (r'([a-zA-Z_?.$][\w?.$]*)\(\) \{', Name.Other, 'slashstartsregex'), + (r'([a-zA-Z_?.$][\w?.$]*)(?=\(\) \{)', Name.Other, 'slashstartsregex'), # Match stuff like: (function: return type) (r'([\w?.$][\w?.$]*)(\s*:\s*)([\w?.$][\w?.$]*)', bygroups(Name.Other, Text, Keyword.Type)), From 4c5564dedef1d78cf377c0e6ab3726db0bba68f1 Mon Sep 17 00:00:00 2001 From: Yiyang Hao Date: Mon, 24 Aug 2020 16:39:44 +0800 Subject: [PATCH 2/3] add test_function_definition --- tests/test_javascript.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tests/test_javascript.py b/tests/test_javascript.py index 25e06fdc25..2d27576e96 100644 --- a/tests/test_javascript.py +++ b/tests/test_javascript.py @@ -9,7 +9,7 @@ import pytest -from pygments.lexers import CoffeeScriptLexer +from pygments.lexers import CoffeeScriptLexer, TypeScriptLexer from pygments.token import Token COFFEE_SLASH_GOLDEN = [ @@ -83,3 +83,25 @@ def test_beware_infinite_loop(lexer): (Token.Text, '\n'), ] assert list(lexer.get_tokens(fragment)) == tokens + +@pytest.fixture(scope='module') +def ts_lexer(): + yield TypeScriptLexer() + +def test_function_definition(ts_lexer): + fragment = u'async function main() {\n}' + tokens = [ + (Token.Name.Other, u'async'), + (Token.Text, u' '), + (Token.Keyword.Declaration, u'function'), + (Token.Text, u' '), + (Token.Name.Other, u'main'), + (Token.Punctuation, u'('), + (Token.Punctuation, u')'), + (Token.Text, u' '), + (Token.Punctuation, u'{'), + (Token.Text, u'\n'), + (Token.Punctuation, u'}'), + (Token.Text, u'\n'), + ] + assert list(ts_lexer.get_tokens(fragment)) == tokens From 05effdac9409f1d04820ecf7c7979987f7a5f36c Mon Sep 17 00:00:00 2001 From: Felix Hao Date: Mon, 4 Jan 2021 14:49:31 +0800 Subject: [PATCH 3/3] Update tests/test_javascript.py Co-authored-by: Mestery <48163546+Mesteery@users.noreply.github.com> --- tests/test_javascript.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_javascript.py b/tests/test_javascript.py index 2d27576e96..d4c60d49d5 100644 --- a/tests/test_javascript.py +++ b/tests/test_javascript.py @@ -91,7 +91,7 @@ def ts_lexer(): def test_function_definition(ts_lexer): fragment = u'async function main() {\n}' tokens = [ - (Token.Name.Other, u'async'), + (Token.Keyword, u'async'), (Token.Text, u' '), (Token.Keyword.Declaration, u'function'), (Token.Text, u' '),