diff --git a/lib/rouge/lexers/html.rb b/lib/rouge/lexers/html.rb index 04cf7ff10a..f7612351ab 100644 --- a/lib/rouge/lexers/html.rb +++ b/lib/rouge/lexers/html.rb @@ -83,8 +83,8 @@ def self.detect?(text) state :tag do rule %r/\s+/m, Text - rule %r/[a-zA-Z0-9_:-]+\s*=\s*/m, Name::Attribute, :attr - rule %r/[a-zA-Z0-9_:-]+/, Name::Attribute + rule %r/[a-zA-Z0-9_:\[\]()*.-]+\s*=\s*/m, Name::Attribute, :attr + rule %r/[a-zA-Z0-9_:#*-]+/, Name::Attribute rule %r(/?\s*>)m, Name::Tag, :pop! end diff --git a/spec/lexers/html_spec.rb b/spec/lexers/html_spec.rb index 90fbddc4dd..6f920376f5 100644 --- a/spec/lexers/html_spec.rb +++ b/spec/lexers/html_spec.rb @@ -18,6 +18,44 @@ ['Name.Tag', ''] end end + describe 'attribute names' do + it 'allow * to support Angular 2+ structural Directives' do + assert_tokens_equal '', + ['Name.Tag', ''] + end + end + describe 'attribute names' do + it 'allow # to support Angular 2+ template reference variables' do + assert_tokens_equal '', + ['Name.Tag', ''] + end + end + describe 'attribute names' do + it 'allow [] to support Angular 2+ data binding inputs' do + assert_tokens_equal '', + ['Name.Tag', ''] + end + end + describe 'attribute names' do + it 'allow () to support Angular 2+ data binding outputs' do + assert_tokens_equal '', + ['Name.Tag', ''] + end + end end describe 'guessing' do diff --git a/spec/visual/samples/html b/spec/visual/samples/html index d10890542e..be4fac65a8 100644 --- a/spec/visual/samples/html +++ b/spec/visual/samples/html @@ -49,3 +49,8 @@ Hello tagless world! + + + + +