Specified dependencies

This commit is contained in:
Ghislain Seguin 2011-12-01 09:32:14 -08:00 committed by scottjehl
parent a39240924d
commit dbedf643d3
8 changed files with 6 additions and 262 deletions

View file

@ -1,253 +0,0 @@
/**
* almond 0.0.1 Copyright (c) 2011, The Dojo Foundation All Rights Reserved.
* Available via the MIT or new BSD license.
* see: http://github.com/jrburke/almond for details
*/
/*jslint strict: false, plusplus: false */
/*global setTimeout: false */
var requirejs, require, define;
(function () {
var defined = {},
aps = [].slice,
req;
if (typeof define === "function") {
//If a define is already in play via another AMD loader,
//do not overwrite.
return;
}
/**
* Given a relative module name, like ./something, normalize it to
* a real name that can be mapped to a path.
* @param {String} name the relative name
* @param {String} baseName a real name that the name arg is relative
* to.
* @returns {String} normalized name
*/
function normalize(name, baseName) {
//Adjust any relative paths.
if (name && name.charAt(0) === ".") {
//If have a base name, try to normalize against it,
//otherwise, assume it is a top-level require that will
//be relative to baseUrl in the end.
if (baseName) {
//Convert baseName to array, and lop off the last part,
//so that . matches that "directory" and not name of the baseName's
//module. For instance, baseName of "one/two/three", maps to
//"one/two/three.js", but we want the directory, "one/two" for
//this normalization.
baseName = baseName.split("/");
baseName = baseName.slice(0, baseName.length - 1);
name = baseName.concat(name.split("/"));
//start trimDots
var i, part;
for (i = 0; (part = name[i]); i++) {
if (part === ".") {
name.splice(i, 1);
i -= 1;
} else if (part === "..") {
if (i === 1 && (name[2] === '..' || name[0] === '..')) {
//End of the line. Keep at least one non-dot
//path segment at the front so it can be mapped
//correctly to disk. Otherwise, there is likely
//no path mapping for a path starting with '..'.
//This can still fail, but catches the most reasonable
//uses of ..
break;
} else if (i > 0) {
name.splice(i - 1, 2);
i -= 2;
}
}
}
//end trimDots
name = name.join("/");
}
}
return name;
}
function makeRequire(relName, forceSync) {
return function () {
//A version of a require function that passes a moduleName
//value for items that may need to
//look up paths relative to the moduleName
return req.apply(null, aps.call(arguments, 0).concat([relName, forceSync]));
};
}
function makeNormalize(relName) {
return function (name) {
return normalize(name, relName);
};
}
function makeLoad(depName) {
return function (value) {
defined[depName] = value;
};
}
/**
* Makes a name map, normalizing the name, and using a plugin
* for normalization if necessary. Grabs a ref to plugin
* too, as an optimization.
*/
function makeMap(name, relName) {
var prefix, plugin,
index = name.indexOf('!');
if (index !== -1) {
prefix = normalize(name.slice(0, index), relName);
name = name.slice(index + 1);
plugin = defined[prefix];
//Normalize according
if (plugin && plugin.normalize) {
name = plugin.normalize(name, makeNormalize(relName));
} else {
name = normalize(name, relName);
}
} else {
name = normalize(name, relName);
}
//Using ridiculous property names for space reasons
return {
f: prefix ? prefix + '!' + name : name, //fullName
n: name,
p: plugin
};
}
function main(name, deps, callback, relName) {
var args = [],
usingExports,
cjsModule, depName, i, ret, map;
//Use name if no relName
if (!relName) {
relName = name;
}
//Call the callback to define the module, if necessary.
if (typeof callback === 'function') {
//Pull out the defined dependencies and pass the ordered
//values to the callback.
if (deps) {
for (i = 0; i < deps.length; i++) {
map = makeMap(deps[i], relName);
depName = map.f;
//Fast path CommonJS standard dependencies.
if (depName === "require") {
args[i] = makeRequire(name);
} else if (depName === "exports") {
//CommonJS module spec 1.1
args[i] = defined[name] = {};
usingExports = true;
} else if (depName === "module") {
//CommonJS module spec 1.1
cjsModule = args[i] = {
id: name,
uri: '',
exports: defined[name]
};
} else if (depName in defined) {
args[i] = defined[depName];
} else if (map.p) {
map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
args[i] = defined[depName];
}
}
}
ret = callback.apply(defined[name], args);
if (name) {
//If setting exports via "module" is in play,
//favor that over return value and exports. After that,
//favor a non-undefined return value over exports use.
if (cjsModule && cjsModule.exports !== undefined) {
defined[name] = cjsModule.exports;
} else if (!usingExports) {
//Use the return value from the function.
defined[name] = ret;
}
}
} else if (name) {
//May just be an object definition for the module. Only
//worry about defining if have a module name.
defined[name] = callback;
}
}
requirejs = req = function (deps, callback, relName, forceSync) {
if (typeof deps === "string") {
//Just return the module wanted. In this scenario, the
//deps arg is the module name, and second arg (if passed)
//is just the relName.
//Normalize module name, if it contains . or ..
return defined[makeMap(deps, callback).f];
} else if (!deps.splice) {
//deps is a config object, not an array.
//Drop the config stuff on the ground.
if (callback.splice) {
//callback is an array, which means it is a dependency list.
//Adjust args if there are dependencies
deps = callback;
callback = arguments[2];
} else {
deps = [];
}
}
//Simulate async callback;
if (forceSync) {
main(null, deps, callback, relName);
} else {
setTimeout(function () {
main(null, deps, callback, relName);
}, 15);
}
return req;
};
/**
* Just drops the config on the floor, but returns req in case
* the config return value is used.
*/
req.config = function () {
return req;
};
/**
* Export require as a global, but only if it does not already exist.
*/
if (!require) {
require = req;
}
define = function (name, deps, callback) {
//This module may not have dependencies
if (!deps.splice) {
//deps is not an array, so probably means
//an object literal for the value. Adjust args.
callback = deps;
deps = [];
}
main(name, deps, callback);
};
define.amd = {};
}());

View file

@ -1,3 +0,0 @@
if ( typeof define === "function" && define.amd ) {
define( "jquery", [], function () { return jQuery; } );
}

View file

@ -2,7 +2,7 @@
* "buttons" plugin - for making button-like links
*/
define( [ "jquery", "jquery.mobile.vmouse" ], function( $, undefined ) {
define( [ "jquery", "jquery.mobile.core", "jquery.mobile.vmouse" ], function( $, undefined ) {
$.fn.buttonMarkup = function( options ) {
options = options || {};

View file

@ -2,7 +2,7 @@
* "core" - The base file for jQm
*/
define( [ "jquery" ], function( $, undefined ) {
define( [ "jquery", "jquery.mobile.support" ], function( $, undefined ) {
var nsNormalizeDict = {};

View file

@ -2,7 +2,7 @@
* "degradeInputs" plugin - degrades inputs to another type after custom enhancements are made.
*/
define( [ "jquery" ], function( $, undefined ) {
define( [ "jquery", "jquery.mobile.page" ], function( $, undefined ) {
$.mobile.page.prototype.options.degradeInputs = {
color: false,

View file

@ -1,3 +1,3 @@
define( [ "jquery.mobile" ], function() {
require( [ "jquery.mobile" ], function() {
require( [ "../docs/_assets/js/jqm-docs" ] );
});

View file

@ -2,7 +2,7 @@
* "init" - Initialize the framework
*/
define( [ "jquery", "jquery.mobile.core" ], function( $, undefined ) {
define( [ "jquery", "jquery.mobile.core", "jquery.mobile.navigation" ], function( $, undefined ) {
var $html = $( "html" ),
$head = $( "head" ),
$window = $( window );

View file

@ -2,7 +2,7 @@
* "transitions" plugin - Page change tranistions
*/
define( [ "jquery" ], function( $, undefined ) {
define( [ "jquery", "jquery.mobile.core" ], function( $, undefined ) {
function css3TransitionHandler( name, reverse, $to, $from ) {