sloisel / numeric

Numerical analysis in Javascript
http://www.numericjs.com/
Other
1.42k stars 177 forks source link

CommonJS/RequireJS/AMD support #35

Open wellcaffeinated opened 11 years ago

wellcaffeinated commented 11 years ago

Hi I've patched the code so that it should work as an AMD Module (with requireJS), a node module (as per commonJS syntax), or a browser global.

The declaration style keeps everything defined in a local scope and then only exposes window.numeric as a last resort.

I've done a build, and all unit tests pass

In order to get around the difficulty of the functions defined with the Function constructor, I had to wrap all of these constructions with a small internal function _fn() which simply does the following:

function _fn( fn ){
    fn.numeric = numeric;
    return fn;
}

so that the body of a function created with the Function constructor (which doesn't have access to the scope that defines numeric), will have access to numeric via

var numeric = arguments.callee.numeric;

I think this was the best way of getting around the scoping issues. But if anyone has a better way, I'm all ears.

Cheers!

Pomax commented 9 years ago

This is a pretty old PR, and does way more than the patch title claims. A separate PR just to expose the top level numeric in the proper way so that it will work in plain browser mode as well as when used as AMD or Commonjs module would be most excellent to have.