diff --git a/src/languages/javascript.js b/src/languages/javascript.js index 1375f885d9..4f4e2051f8 100644 --- a/src/languages/javascript.js +++ b/src/languages/javascript.js @@ -6,7 +6,8 @@ Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript */ function(hljs) { - var SELF_CLOSING_TAG = /<[A-Za-z0-9\\._:-]+\s*\/>/; + var TAG_START = /<[A-Za-z0-9\\._:-]+/; + var TAG_FINISH = /\/[A-Za-z0-9\\._:-]+>|\/>/; var IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; var KEYWORDS = { keyword: @@ -189,18 +190,13 @@ function(hljs) { skip: true, }, { // E4X / JSX - className: 'jsx', - begin: /<[A-Za-z0-9\\._:-]+/, - end: /\/[A-Za-z0-9\\._:-]+>|\/>/, + begin: TAG_START, end: TAG_FINISH, subLanguage: 'xml', contains: [ { - begin: /<[A-Za-z0-9\\._:-]+/, end: /(\/[A-Za-z0-9\\._:-]+)>/, skip: true, - contains: [ - { begin: /<[A-Za-z0-9\\._:-]+\s*/, end: /\/>/, skip: true }, - 'self' - ] - }, + begin: TAG_START, end: TAG_FINISH, skip: true, + contains: ['self'] + } ] } ], diff --git a/test/markup/javascript/jsx.expect.txt b/test/markup/javascript/jsx.expect.txt index 2a2fb84e23..a000fe75a7 100644 --- a/test/markup/javascript/jsx.expect.txt +++ b/test/markup/javascript/jsx.expect.txt @@ -3,5 +3,25 @@ var jsx = <node>...<child>...</child></node>; var jsx = <div><span><br /></span></div>; var jsx = <pre-node><child /></pre-node>; + var x = 5; + return (<node attr="value"></node>); + +const n = () => <X /> +const m = () => <X x="" /> + +class App extends Component { + render() { + return ( + <BrowserRouter> + <div> + <Route path="/about" component={About} /> + <Route path="/contact" component={Contact} /> + </div> + </BrowserRouter> + ); + } +} + +var x = 5; diff --git a/test/markup/javascript/jsx.txt b/test/markup/javascript/jsx.txt index 7d1042c153..a76ef8eecd 100644 --- a/test/markup/javascript/jsx.txt +++ b/test/markup/javascript/jsx.txt @@ -3,5 +3,25 @@ var jsx = ; var jsx = ......; var jsx =

; var jsx = ; + var x = 5; + return (); + +const n = () => +const m = () => + +class App extends Component { + render() { + return ( + +
+ + +
+
+ ); + } +} + +var x = 5;