diff --git a/.gitignore b/.gitignore index b466d89..481f313 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ __pycache__ dist build *.egg-info +.egg .cache .coverage coverage_html_report diff --git a/vue/lexer.py b/vue/lexer.py index e836d5b..4e68641 100644 --- a/vue/lexer.py +++ b/vue/lexer.py @@ -2,7 +2,7 @@ from pygments.lexer import bygroups, default, include from pygments.lexers.javascript import JavascriptLexer -from pygments.token import Literal, Name, Operator, Punctuation, String, Text +from pygments.token import Name, Operator, Punctuation, String, Text # Use same tokens as `JavascriptLexer`, but with tags and attributes support TOKENS = JavascriptLexer.tokens @@ -10,7 +10,7 @@ TOKENS.update( { "vue": [ - (r"(<)([\w]+)", bygroups(Punctuation, Name.Tag), "tag"), + (r"(<)([\w-]+)", bygroups(Punctuation, Name.Tag), "tag"), ( r"(<)(/)([\w]+)(>)", bygroups(Punctuation, Punctuation, Name.Tag, Punctuation), @@ -18,33 +18,13 @@ ], "tag": [ (r"\s+", Text), - (r"(-)([\w]+)", Name.Tag), - (r'(@[\w]+)(="[\S]+")(>)', bygroups(Name.Tag, Literal.String, Punctuation)), - (r'(@[\w]+)(="[\S]+")', bygroups(Name.Tag, Literal.String)), - (r'(@[\S]+)(="[\S]+")', bygroups(Name.Tag, Literal.String)), - (r'(:[\S]+)(="[\S]+")', bygroups(Name.Tag, Literal.String)), - (r"(:)", Operator), - (r"(v-b-[\S]+)", Name.Tag), ( - r'(v-[\w]+)(=".+)([:][\w]+)(="[\w]+")(>)', - bygroups( - Name.Tag, Literal.String, Name.Tag, Literal.String, Punctuation - ), + r"([@:]?[\w-]+\s*)(=)(\s*)", + bygroups(Name.Attribute, Operator, Text), + "attr", ), - ( - r'(v-[\w]+)(="[\S]+")(>)', - bygroups(Name.Tag, Literal.String, Punctuation), - ), - (r"(v-[\w]+)(>)", bygroups(Name.Tag, Punctuation)), - (r'(v-[\w]+)(=".+")(>)', bygroups(Name.Tag, Literal.String, Punctuation)), - (r"(<)([\w]+)", bygroups(Punctuation, Name.Tag)), - ( - r"(<)(/)([\w]+)(>)", - bygroups(Punctuation, Punctuation, Name.Tag, Punctuation), - ), - (r"([\w]+\s*)(=)(\s*)", bygroups(Name.Attribute, Operator, Text), "attr"), (r"[{}]+", Punctuation), - (r"[\w\.]+", Name.Attribute), + (r"[\w\.-]+", Name.Attribute), (r"(/?)(\s*)(>)", bygroups(Punctuation, Text, Punctuation), "#pop"), ], "attr": [