You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
typesetting/pitfall/pdfkit/node_modules/lexical-scope
Matthew Butterick 3f36e2ce2c porting 7 years ago
..
bench porting 7 years ago
example porting 7 years ago
test porting 7 years ago
.travis.yml porting 7 years ago
LICENSE porting 7 years ago
index.js porting 7 years ago
mine.js porting 7 years ago
package.json porting 7 years ago
readme.markdown porting 7 years ago

readme.markdown

lexical-scope

detect global and local lexical identifiers from javascript source code

browser support

build status

example

var detect = require('lexical-scope');
var fs = require('fs');
var src = fs.readFileSync(__dirname + '/src.js');

var scope = detect(src);
console.dir(scope);

input:

var x = 5;
var y = 3, z = 2;

w.foo();
w = 2;

RAWR=444;
RAWR.foo();

BLARG=3;

foo(function () {
    var BAR = 3;
    process.nextTick(function (ZZZZZZZZZZZZ) {
        console.log('beep boop');
        var xyz = 4;
        x += 10;
        x.zzzzzz;
        ZZZ=6;
    });
    function doom () {
    }
    ZZZ.foo();

});

console.log(xyz);

output:

$ node example/detect.js
{ locals: 
   { '': [ 'x', 'y', 'z' ],
     'body.7.arguments.0': [ 'BAR', 'doom' ],
     'body.7.arguments.0.body.1.arguments.0': [ 'xyz' ],
     'body.7.arguments.0.body.2': [] },
  globals: 
   { implicit: [ 'w', 'foo', 'process', 'console', 'xyz' ],
     exported: [ 'w', 'RAWR', 'BLARG', 'ZZZ' ] } }

live demo

If you are using a modern browser, you can go to http://lexical-scope.forbeslindesay.co.uk/ for a live demo.

methods

var detect = require('lexical-scope')

var scope = detect(src)

Return a scope structure from a javascript source string src.

scope.locals maps scope name keys to an array of local variable names declared with var. The key name '' refers to the top-level scope.

scope.globals.implicit contains the global variable names that are expected to already exist in the environment by the script.

scope.globals.explicit contains the global variable names that are exported by the script.

install

With npm do:

npm install lexical-scope

license

MIT