From 139ec15dd20d1c5daee2c3d0bae23c4b835e15a4 Mon Sep 17 00:00:00 2001 From: Mark Lautman Date: Thu, 5 Jul 2018 11:35:11 -0400 Subject: Add robustness to Handlebars laxer. --- pygments/lexers/templates.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/pygments/lexers/templates.py b/pygments/lexers/templates.py index 83c57db8..72e4ffa3 100644 --- a/pygments/lexers/templates.py +++ b/pygments/lexers/templates.py @@ -1802,27 +1802,25 @@ class HandlebarsLexer(RegexLexer): 'root': [ (r'[^{]+', Other), + # Comment start {{! }} or {{!-- (r'\{\{!.*\}\}', Comment), + # HTML Escaping open {{{expression (r'(\{\{\{)(\s*)', bygroups(Comment.Special, Text), 'tag'), + # {{blockOpen {{#blockOpen {{/blockClose with optional ~ + (r'(\{\{)([#~/]+)([^\s}]*)', bygroups(Comment.Preproc, Number.Attribute,Number.Attribute), 'tag'), (r'(\{\{)(\s*)', bygroups(Comment.Preproc, Text), 'tag'), ], 'tag': [ (r'\s+', Text), + # HTML Escaping close }}} (r'\}\}\}', Comment.Special, '#pop'), - (r'\}\}', Comment.Preproc, '#pop'), - - # Handlebars - (r'([#/]*)(each|if|unless|else|with|log|in(line)?)', bygroups(Keyword, - Keyword)), - (r'#\*inline', Keyword), - - # General {{#block}} - (r'([#/])([\w-]+)', bygroups(Name.Function, Name.Function)), + # blockClose}}, includes optional tilde ~ + (r'(~?)(\}\})', bygroups(Number, Comment.Preproc), '#pop'), # {{opt=something}} - (r'([\w-]+)(=)', bygroups(Name.Attribute, Operator)), + (r'([^\s}]+)(=)', bygroups(Name.Attribute, Operator)), # Partials {{> ...}} (r'(>)(\s*)(@partial-block)', bygroups(Keyword, Text, Keyword)), @@ -1845,7 +1843,7 @@ class HandlebarsLexer(RegexLexer): include('generic'), ], 'variable': [ - (r'[a-zA-Z][\w-]*', Name.Variable), + (r'[()/@a-zA-Z][\w-]*', Name.Variable), (r'\.[\w-]+', Name.Variable), (r'(this\/|\.\/|(\.\.\/)+)[\w-]+', Name.Variable), ], -- cgit v1.2.1 From 2370284149f4490c2206617ef356c8565328b75e Mon Sep 17 00:00:00 2001 From: Mark Lautman Date: Thu, 5 Jul 2018 11:49:07 -0400 Subject: Update comment. --- pygments/lexers/templates.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pygments/lexers/templates.py b/pygments/lexers/templates.py index 72e4ffa3..5e5677fc 100644 --- a/pygments/lexers/templates.py +++ b/pygments/lexers/templates.py @@ -1807,7 +1807,8 @@ class HandlebarsLexer(RegexLexer): # HTML Escaping open {{{expression (r'(\{\{\{)(\s*)', bygroups(Comment.Special, Text), 'tag'), - # {{blockOpen {{#blockOpen {{/blockClose with optional ~ + + # {{blockOpen {{#blockOpen {{/blockClose with optional tilde ~ (r'(\{\{)([#~/]+)([^\s}]*)', bygroups(Comment.Preproc, Number.Attribute,Number.Attribute), 'tag'), (r'(\{\{)(\s*)', bygroups(Comment.Preproc, Text), 'tag'), ], -- cgit v1.2.1