Welcome to mirror list, hosted at ThFree Co, Russian Federation.

detectStrictMode.js « lib - github.com/twbs/rewire.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 30f59fd6de7e4c37a4f7aef72f43ed5c98d254da (plain)
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
var multiLineComment = /^\s*\/\*.*?\*\//;
var singleLineComment = /^\s*\/\/.*?[\r\n]/;
var strictMode = /^\s*(?:"use strict"|'use strict')[ \t]*(?:[\r\n]|;)/;

/**
 * Returns true if the source code is intended to run in strict mode. Does not detect
 * "use strict" if it occurs in a nested function.
 *
 * @param {String} src
 * @return {Boolean}
 */
function detectStrictMode(src) {
    var singleLine;
    var multiLine;

    while ((singleLine = singleLineComment.test(src)) || (multiLine = multiLineComment.test(src))) {
        if (singleLine) {
            src = src.replace(singleLineComment, "");
        }
        if (multiLine) {
            src = src.replace(multiLineComment, "");
        }
    }

    return strictMode.test(src);
}

module.exports = detectStrictMode;