From 0da4bd1471dee2008916e618989061e463ceabb9 Mon Sep 17 00:00:00 2001 From: Tristan Menzel Date: Mon, 20 Apr 2020 12:24:48 +1000 Subject: [PATCH] Adds support for jsx blocks in typescript lexer Adds support for jsx tags with a period in their name Adds support for jsx fragments (<>) --- lexers/j/jsx.go | 5 +-- lexers/t/typescript.go | 26 ++++++++++++++- lexers/testdata/jsx.actual | 6 +++- lexers/testdata/jsx.expected | 14 +++++++- lexers/testdata/tsx.actual | 13 ++++++++ lexers/testdata/tsx.expected | 65 ++++++++++++++++++++++++++++++++++++ 6 files changed, 124 insertions(+), 5 deletions(-) create mode 100644 lexers/testdata/tsx.actual create mode 100644 lexers/testdata/tsx.expected diff --git a/lexers/j/jsx.go b/lexers/j/jsx.go index 71642d6..7c098b9 100644 --- a/lexers/j/jsx.go +++ b/lexers/j/jsx.go @@ -69,8 +69,9 @@ var JSX = internal.Register(MustNewLexer( Include("root"), }, "jsx": { - {`(<)([\w]+)`, ByGroups(Punctuation, NameTag), Push("tag")}, - {`(<)(/)([\w]+)(>)`, ByGroups(Punctuation, Punctuation, NameTag, Punctuation), nil}, + {`(<)(/?)(>)`, ByGroups(Punctuation, Punctuation, Punctuation), nil}, + {`(<)([\w\.]+)`, ByGroups(Punctuation, NameTag), Push("tag")}, + {`(<)(/)([\w\.]+)(>)`, ByGroups(Punctuation, Punctuation, NameTag, Punctuation), nil}, }, "tag": { {`\s+`, Text, nil}, diff --git a/lexers/t/typescript.go b/lexers/t/typescript.go index 57d08bf..3b425ed 100644 --- a/lexers/t/typescript.go +++ b/lexers/t/typescript.go @@ -9,7 +9,7 @@ import ( var TypeScript = internal.Register(MustNewLexer( &Config{ Name: "TypeScript", - Aliases: []string{"ts", "typescript"}, + Aliases: []string{"ts", "tsx", "typescript"}, Filenames: []string{"*.ts", "*.tsx"}, MimeTypes: []string{"text/x-typescript"}, DotAll: true, @@ -32,6 +32,7 @@ var TypeScript = internal.Register(MustNewLexer( {`\n`, Text, Pop(1)}, }, "root": { + Include("jsx"), {`^(?=\s|/|