react / wstein / node_modules / browserify / node_modules / insert-module-globals / node_modules / lexical-scope / mine.js
80537 viewsmodule.exports = mine;12function mine (js) {3js = String(js);4var names = [];5var state = 0;6var ident;7var quote;8var name;9var start;1011var isIdent = /[a-z0-9_.]/i;12var isWhitespace = /[ \r\n\t]/;1314function $start (char) {15if (char === "/") {16return $slash;17}18if (char === "'" || char === '"') {19quote = char;20return $string;21}22if (isIdent.test(char)) {23ident = char;24return $ident;25}26return $start;27}2829function $ident (char) {30if (isIdent.test(char)) {31ident += char;32return $ident;33}34if (char === "(" && ident === "require") {35ident = undefined;36return $call;37}38else if (isWhitespace.test(char)){39if (ident !== 'yield' && ident !== 'return'){40return $ident;41}42}43return $start(char);44}4546function $call (char) {47if (isWhitespace.test(char)) return $call;48if (char === "'" || char === '"') {49quote = char;50name = "";51start = i + 1;52return $name;53}54return $start(char);55}5657function $name (char) {58if (char === quote) {59return $close;60}61name += char;62return $name;63}6465function $close (char) {66if (isWhitespace.test(char)) return $close;67if (char === ")" || char === ',') {68names.push({69name: name,70offset: start71});72}73name = undefined;74return $start(char);75}7677function $string (char) {78if (char === "\\") {79return $escape;80}81if (char === quote) {82return $start;83}84return $string;85}8687function $escape (char) {88return $string;89}9091function $slash (char) {92if (char === "/") return $lineComment;93if (char === "*") return $multilineComment;94return $start(char);95}9697function $lineComment (char) {98if (char === "\r" || char === "\n") return $start;99return $lineComment;100}101102function $multilineComment (char) {103if (char === "*") return $multilineEnding;104return $multilineComment;105}106107function $multilineEnding (char) {108if (char === "/") return $start;109if (char === "*") return $multilineEnding;110return $multilineComment;111}112113var state = $start;114for (var i = 0, l = js.length; i < l; i++) {115state = state(js[i]);116}117return names;118}119120121