all files / lib/languages/ jsx.js

100% Statements 13/13
100% Branches 0/0
100% Functions 0/0
100% Lines 13/13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38                                                 
"use strict";
 
Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.jsx = undefined;
 
var _utils = require("../utils");
 
var _javascript = require("./javascript");
 
var _markup = require("./markup");
 
var jsx = _utils.lang.extend(_markup.markup, _javascript.javascript);
 
jsx.tag.pattern = /<\/?[\w\.:-]+\s*(?:\s+[\w\.:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+|(\{[\w\W]*?\})))?\s*)*\/?>/i;
jsx.tag.inside["attr-value"].pattern = /=[^\{](?:('|")[\w\W]*?(\1)|[^\s>]+)/i;
 
var jsxExpression = _utils.lang.clone(jsx);
 
delete jsxExpression.punctuation;
 
_utils.lang.insertBefore(jsxExpression, "operator", {
    punctuation: /=(?={)|[{}[\];(),.:]/,
    _order: ["punctuation"]
});
 
_utils.lang.insertBefore(jsx.tag.inside, "attr-value", {
    "script": {
        // Allow for one level of nesting
        pattern: /=(\{(?:\{[^}]*\}|[^}])+\})/i,
        inside: jsxExpression,
        "alias": "language-javascript"
    },
    _order: ["script"]
});
 
exports.jsx = jsx;