AutorÃa | Ultima modificación | Ver Log |
YUI.add('get', function (Y, NAME) {/*** 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.* @module get-nodejs* @class GetNodeJS*/var Module = require('module'),path = require('path'),fs = require('fs'),request = require('request'),end = function(cb, msg, result) {//Y.log('Get end: ' + cb.onEnd);if (Y.Lang.isFunction(cb.onEnd)) {cb.onEnd.call(Y, msg, result);}}, pass = function(cb) {//Y.log('Get pass: ' + cb.onSuccess);if (Y.Lang.isFunction(cb.onSuccess)) {cb.onSuccess.call(Y, cb);}end(cb, 'success', 'success');}, fail = function(cb, er) {//Y.log('Get fail: ' + er);er.errors = [er];if (Y.Lang.isFunction(cb.onFailure)) {cb.onFailure.call(Y, er, cb);}end(cb, er, 'fail');};Y.Get = function() {};//Setup the default config base pathY.config.base = path.join(__dirname, '../');YUI.require = require;YUI.process = process;/*** Takes the raw JS files and wraps them to be executed in the YUI context so they can be loaded* into the YUI object* @method _exec* @private* @param {String} data The JS to execute* @param {String} url The path to the file that was parsed* @param {Function} cb The callback to execute when this is completed* @param {Error} cb.err=null Error object* @param {String} cb.url The URL that was just parsed*/Y.Get._exec = function(data, url, cb) {if (data.charCodeAt(0) === 0xFEFF) {data = data.slice(1);}var mod = new Module(url, module);mod.filename = url;mod.paths = Module._nodeModulePaths(path.dirname(url));if (typeof YUI._getLoadHook === 'function') {data = YUI._getLoadHook(data, url);}mod._compile('module.exports = function (YUI) {' +'return (function () {'+ data + '\n;return YUI;}).apply(global);' +'};', url);/*global YUI:true */YUI = mod.exports(YUI);mod.loaded = true;cb(null, url);};/*** Fetches the content from a remote URL or a file from disc and passes the content* off to `_exec` for parsing* @method _include* @private* @param {String} url The URL/File path to fetch the content from* @param {Function} cb The callback to fire once the content has been executed via `_exec`*/Y.Get._include = function (url, cb) {var cfg,mod,self = this;if (url.match(/^https?:\/\//)) {cfg = {url: url,timeout: self.timeout};request(cfg, function (err, response, body) {if (err) {Y.log(err, 'error', 'get');cb(err, url);} else {Y.Get._exec(body, url, cb);}});} else {try {// Try to resolve paths relative to the module that required yui.url = Module._findPath(url, Module._resolveLookupPaths(url, module.parent.parent)[1]);if (Y.config.useSync) {//Needs to be in useSyncmod = fs.readFileSync(url,'utf8');} else {fs.readFile(url, 'utf8', function (err, mod) {if (err) {cb(err, url);} else {Y.Get._exec(mod, url, cb);}});return;}} catch (err) {cb(err, url);return;}Y.Get._exec(mod, url, cb);}};/*** Override for Get.script for loading local or remote YUI modules.* @method js* @param {Array|String} s The URL's to load into this context* @param {Object} options Transaction options*/Y.Get.js = function(s, options) {var urls = Y.Array(s), url, i, l = urls.length, c= 0,check = function() {if (c === l) {pass(options);}};/*jshint loopfunc: true */for (i=0; i<l; i++) {url = urls[i];if (Y.Lang.isObject(url)) {url = url.url;}url = url.replace(/'/g, '%27');Y.log('URL: ' + url, 'info', 'get');Y.Get._include(url, function(err, url) {if (!Y.config) {Y.config = {debug: true};}if (options.onProgress) {options.onProgress.call(options.context || Y, url);}Y.log('After Load: ' + url, 'info', 'get');if (err) {fail(options, err);Y.log('----------------------------------------------------------', 'error', 'get');Y.log(err, 'error', 'get');Y.log('----------------------------------------------------------', 'error', 'get');} else {c++;check();}});}//Keeping Signature in the browser.return {execute: function() {}};};/*** Alias for `Y.Get.js`* @method script*/Y.Get.script = Y.Get.js;//Place holder for SS Dom accessY.Get.css = function(s, cb) {Y.log('Y.Get.css is not supported, just reporting that it has loaded but not fetching.', 'warn', 'get');pass(cb);};}, '3.18.1');