diff --git a/components/prism-jsx.js b/components/prism-jsx.js index 07a04af44e..5f106d5047 100644 --- a/components/prism-jsx.js +++ b/components/prism-jsx.js @@ -3,20 +3,23 @@ var javascript = Prism.util.clone(Prism.languages.javascript); Prism.languages.jsx = Prism.languages.extend('markup', javascript); -Prism.languages.jsx.tag.pattern= /<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+|(\{[\w\W]*?\})))?\s*)*\/?>/i; +Prism.languages.jsx.tag.pattern= /<\/?[\w\.:-]+\s*(?:\s+[\w\.:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+|(\{[\w\W]*?\})))?\s*)*\/?>/i; Prism.languages.jsx.tag.inside['attr-value'].pattern = /=[^\{](?:('|")[\w\W]*?(\1)|[^\s>]+)/i; +var jsxExpression = Prism.util.clone(Prism.languages.jsx); + +delete jsxExpression.punctuation + +jsxExpression = Prism.languages.insertBefore('jsx', 'operator', { + 'punctuation': /=(?={)|[{}[\];(),.:]/ +}, { jsx: jsxExpression }); + Prism.languages.insertBefore('inside', 'attr-value',{ 'script': { // Allow for one level of nesting pattern: /=(\{(?:\{[^}]*\}|[^}])+\})/i, - inside: { - 'function' : Prism.languages.javascript.function, - 'punctuation': /[={}[\];(),.:]/, - 'keyword': Prism.languages.javascript.keyword, - 'boolean': Prism.languages.javascript.boolean - }, + inside: jsxExpression, 'alias': 'language-javascript' } }, Prism.languages.jsx.tag);