get-nodejs-debug.js revision 0c7c93f66f5b0af032703f26632682b685b26be5
0c7c93f66f5b0af032703f26632682b685b26be5Dav GlassYUI.add('get-nodejs', function(Y) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass /**
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass * NodeJS specific Get module used to load remote resources. It contains the same signature as the default Get module so there is no code change needed.
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass * Note: There is an added method called Get.domScript, which is the same as Get.script in a browser, it simply loads the script into the dom tree
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass * so that you can call outerHTML on the document to print it to the screen.
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass * @module get-nodejs
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass */
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass var path = require('path');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass Y.config.base = path.join(__dirname, '../');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass console.log(Y.config);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass YUI.add('get', function() { });
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass var end = function(cb, msg, result) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass //Y.log('Get end: ' + cb.onEnd);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass if (Y.Lang.isFunction(cb.onEnd)) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass cb.onEnd.call(Y, msg, result);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass }
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass }, pass = function(cb) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass //Y.log('Get pass: ' + cb.onSuccess);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass if (Y.Lang.isFunction(cb.onSuccess)) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass cb.onSuccess.call(Y, cb);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass }
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass end(cb, 'success', 'success');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass }, fail = function(cb, er) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass //Y.log('Get fail: ' + er);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass if (Y.Lang.isFunction(cb.onFailure)) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass cb.onFailure.call(Y, er, cb);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass }
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass end(cb, er, 'fail');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass };
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass Y.Get = function() {};
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass /**
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass * Override for Get.script for loading local or remote YUI modules.
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass */
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass Y.Get.script = function(s, cb) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass var A = Y.Array,
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass urls = A(s), url, i, l = urls.length;
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass for (i=0; i<l; i++) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass url = urls[i];
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass url = url.replace(/'/g, '%27');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass Y.log('URL: ' + url, 'info', 'get');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass // doesn't need to be blocking, so don't block.
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass include(url, function(err) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass if (!Y.config) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass Y.config = {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass debug: true
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass };
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass }
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass Y.log('Loaded: ' + url, 'info', 'get');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass if (err) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass Y.log('----------------------------------------------------------', 'error', 'nodejsYUI3');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass if (err.stack) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass A.each(err.stack.split('\n'), function(frame) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass Y.log(frame, 'error', 'nodejsYUI3');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass });
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass } else {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass console.log(err);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass }
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass Y.log('----------------------------------------------------------', 'error', 'nodejsYUI3');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass } else {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass pass(cb);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass }
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass });
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass }
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass };
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass var vm = require('vm'),
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass fs = require('fs');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass var include = function(url, cb) {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass var mod = fs.readFileSync(url, 'utf8');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass var script = vm.createScript(mod, url);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass var box = {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass YUI: {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass add: function() {
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass console.log('YUI in the sandbox');
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass console.log(arguments);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass YUI.apply(YUI, arguments);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass cb();
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass }
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass }
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass };
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass script.runInNewContext(box);
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass };
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass
0c7c93f66f5b0af032703f26632682b685b26be5Dav Glass}, '@VERSION@' ,{requires:['yui-base']});