Skip to content

Commit 971dda7

Browse files
committed
Better Nesting in JSX attributes
Credit @jquense
1 parent d9b351f commit 971dda7

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

components/prism-jsx.js

+10-7
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,23 @@
33
var javascript = Prism.util.clone(Prism.languages.javascript);
44

55
Prism.languages.jsx = Prism.languages.extend('markup', javascript);
6-
Prism.languages.jsx.tag.pattern= /<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+|(\{[\w\W]*?\})))?\s*)*\/?>/i;
6+
Prism.languages.jsx.tag.pattern= /<\/?[\w\.:-]+\s*(?:\s+[\w\.:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+|(\{[\w\W]*?\})))?\s*)*\/?>/i;
77

88
Prism.languages.jsx.tag.inside['attr-value'].pattern = /=[^\{](?:('|")[\w\W]*?(\1)|[^\s>]+)/i;
99

10+
var jsxExpression = Prism.util.clone(Prism.languages.jsx);
11+
12+
delete jsxExpression.punctuation
13+
14+
jsxExpression = Prism.languages.insertBefore('jsx', 'operator', {
15+
'punctuation': /=(?={)|[{}[\];(),.:]/
16+
}, { jsx: jsxExpression });
17+
1018
Prism.languages.insertBefore('inside', 'attr-value',{
1119
'script': {
1220
// Allow for one level of nesting
1321
pattern: /=(\{(?:\{[^}]*\}|[^}])+\})/i,
14-
inside: {
15-
'function' : Prism.languages.javascript.function,
16-
'punctuation': /[={}[\];(),.:]/,
17-
'keyword': Prism.languages.javascript.keyword,
18-
'boolean': Prism.languages.javascript.boolean
19-
},
22+
inside: jsxExpression,
2023
'alias': 'language-javascript'
2124
}
2225
}, Prism.languages.jsx.tag);

0 commit comments

Comments
 (0)