Skip to content

Commit

Permalink
- upgraded to almond 0.1.1
Browse files Browse the repository at this point in the history
- updated BackStack version to 0.1.1
  • Loading branch information
pwalczyszyn committed Jun 12, 2012
1 parent 6c716c3 commit 7b6aed1
Show file tree
Hide file tree
Showing 7 changed files with 9,064 additions and 2,094 deletions.
26 changes: 25 additions & 1 deletion backstack-min.js

Large diffs are not rendered by default.

189 changes: 106 additions & 83 deletions backstack.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,45 +20,34 @@

(function (root, factory) {
// Set up BackStack appropriately for the environment.
if (typeof exports !== 'undefined') {
// Node/CommonJS, no need for jQuery in that case.
factory(root, exports, require('underscore'), require('jquery'), require('Backbone'));
} else if (typeof define === 'function' && define.amd) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['underscore', 'jquery', 'Backbone', 'exports'],
function (_, $, Backbone, exports) {
// Export global even in AMD case in case this script is loaded with
// others that may still expect a global Backbone.
root.BackStack = factory(root, exports, _, $, Backbone);
});
define(['jquery', 'underscore', 'Backbone'], factory);
} else {
// Browser globals
root.BackStack = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender), root.Backbone);
root.BackStack = factory((root.jQuery || root.Zepto || root.ender), root._, root.Backbone);
}
}(this, function (root, BackStack, _, $, Backbone) {
}(this, function ($, _, Backbone) {

/**
* almond 0.0.3 Copyright (c) 2011, The Dojo Foundation All Rights Reserved.
* almond 0.1.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 */
//Going sloppy to avoid 'use strict' string cost, but strict practices should
//be followed.
/*jslint sloppy: true */
/*global setTimeout: false */

var requirejs, require, define;
(function (undef) {

var defined = {},
waiting = {},
config = {},
defining = {},
aps = [].slice,
main, 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.
Expand All @@ -68,6 +57,11 @@ var requirejs, require, define;
* @returns {String} normalized name
*/
function normalize(name, baseName) {
var baseParts = baseName && baseName.split("/"),
map = config.map,
starMap = (map && map['*']) || {},
nameParts, nameSegment, mapValue, foundMap, i, j, part;

//Adjust any relative paths.
if (name && name.charAt(0) === ".") {
//If have a base name, try to normalize against it,
Expand All @@ -79,13 +73,11 @@ var requirejs, require, define;
//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);
baseParts = baseParts.slice(0, baseParts.length - 1);

name = baseName.concat(name.split("/"));
name = baseParts.concat(name.split("/"));

//start trimDots
var i, part;
for (i = 0; (part = name[i]); i++) {
if (part === ".") {
name.splice(i, 1);
Expand All @@ -98,7 +90,7 @@ var requirejs, require, define;
//no path mapping for a path starting with '..'.
//This can still fail, but catches the most reasonable
//uses of ..
break;
return true;
} else if (i > 0) {
name.splice(i - 1, 2);
i -= 2;
Expand All @@ -110,6 +102,43 @@ var requirejs, require, define;
name = name.join("/");
}
}

//Apply map config if available.
if ((baseParts || starMap) && map) {
nameParts = name.split('/');

for (i = nameParts.length; i > 0; i -= 1) {
nameSegment = nameParts.slice(0, i).join("/");

if (baseParts) {
//Find the longest baseName segment match in the config.
//So, do joins on the biggest to smallest lengths of baseParts.
for (j = baseParts.length; j > 0; j -= 1) {
mapValue = map[baseParts.slice(0, j).join('/')];

//baseName segment has config, find if it has one for
//this name.
if (mapValue) {
mapValue = mapValue[nameSegment];
if (mapValue) {
//Match, update name to the new value.
foundMap = mapValue;
break;
}
}
}
}

foundMap = foundMap || starMap[nameSegment];

if (foundMap) {
nameParts.splice(0, i, foundMap);
name = nameParts.join('/');
break;
}
}
}

return name;
}

Expand Down Expand Up @@ -138,8 +167,13 @@ var requirejs, require, define;
if (waiting.hasOwnProperty(name)) {
var args = waiting[name];
delete waiting[name];
defining[name] = true;
main.apply(undef, args);
}

if (!defined.hasOwnProperty(name)) {
throw new Error('No ' + name);
}
return defined[name];
}

Expand Down Expand Up @@ -175,27 +209,27 @@ var requirejs, require, define;
};
}

function makeConfig(name) {
return function () {
return (config && config.config && config.config[name]) || {};
};
}

main = function (name, deps, callback, relName) {
var args = [],
usingExports,
cjsModule, depName, i, ret, map;
cjsModule, depName, ret, map, i;

//Use name if no relName
if (!relName) {
relName = name;
}
relName = relName || name;

//Call the callback to define the module, if necessary.
if (typeof callback === 'function') {

//Default to require, exports, module if no deps if
//the factory arg has any arguments specified.
if (!deps.length && callback.length) {
deps = ['require', 'exports', 'module'];
}

//Pull out the defined dependencies and pass the ordered
//values to the callback.
//Default to [require, exports, module] if no deps
deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
for (i = 0; i < deps.length; i++) {
map = makeMap(deps[i], relName);
depName = map.f;
Expand All @@ -212,15 +246,16 @@ var requirejs, require, define;
cjsModule = args[i] = {
id: name,
uri: '',
exports: defined[name]
exports: defined[name],
config: makeConfig(name)
};
} else if (defined.hasOwnProperty(depName) || waiting.hasOwnProperty(depName)) {
args[i] = callDep(depName);
} else if (map.p) {
map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
args[i] = defined[depName];
} else {
throw name + ' missing ' + depName;
} else if (!defining[depName]) {
throw new Error(name + ' missing ' + depName);
}
}

Expand All @@ -230,9 +265,10 @@ var requirejs, require, define;
//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 !== undef) {
if (cjsModule && cjsModule.exports !== undef &&
cjsModule.exports !== defined[name]) {
defined[name] = cjsModule.exports;
} else if (!usingExports) {
} else if (ret !== undef || !usingExports) {
//Use the return value from the function.
defined[name] = ret;
}
Expand All @@ -244,27 +280,30 @@ var requirejs, require, define;
}
};

requirejs = req = function (deps, callback, relName, forceSync) {
requirejs = require = 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 callDep(makeMap(deps, callback).f);
} else if (!deps.splice) {
//deps is a config object, not an array.
//Drop the config stuff on the ground.
config = deps;
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];
callback = relName;
relName = null;
} else {
deps = [];
deps = undef;
}
}

//Support require(['a'])
callback = callback || function () {};

//Simulate async callback;
if (forceSync) {
main(undef, deps, callback, relName);
Expand All @@ -281,17 +320,11 @@ var requirejs, require, define;
* Just drops the config on the floor, but returns req in case
* the config return value is used.
*/
req.config = function () {
req.config = function (cfg) {
config = cfg;
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
Expand All @@ -303,11 +336,7 @@ var requirejs, require, define;
deps = [];
}

if (define.unordered) {
waiting[name] = [name, deps, callback];
} else {
main(name, deps, callback);
}
waiting[name] = [name, deps, callback];
};

define.amd = {
Expand Down Expand Up @@ -395,19 +424,6 @@ define('effects/Effect',['effects/vendorPrefix'], function (vendorPrefix) {

return Effect;
});
define('effects/NoEffect',['effects/Effect'], function (Effect) {

var NoEffect = Effect.extend();
NoEffect.prototype.play = function ($fromView, $toView, callback, context) {
if ($toView) {
// Showing the view
$toView.css('visibility', 'visible');
}
callback.call(context);
};

return NoEffect;
});
define('effects/SlideEffect',['effects/Effect'], function (Effect) {

var SlideEffect = Effect.extend({
Expand Down Expand Up @@ -1076,17 +1092,24 @@ define('effects/FadeEffect',['effects/Effect'], function (Effect) {

return FadeEffect;
});
define('BackStack',['StackNavigator', 'effects/Effect', 'effects/NoEffect', 'effects/SlideEffect', 'effects/FadeEffect'],
function (StackNavigator, Effect, NoEffect, SlideEffect, FadeEffect) {

BackStack.StackNavigator = StackNavigator;
BackStack.Effect = Effect;
BackStack.NoEffect = NoEffect;
BackStack.SlideEffect = SlideEffect;
BackStack.FadeEffect = FadeEffect;
define('effects/NoEffect',['effects/Effect'], function (Effect) {

return BackStack;
});
var NoEffect = Effect.extend();
NoEffect.prototype.play = function ($fromView, $toView, callback, context) {
if ($toView) {
// Showing the view
$toView.css('visibility', 'visible');
}
callback.call(context);
};

return BackStack;
return NoEffect;
});
return {
StackNavigator : require('StackNavigator'),
Effect : require('effects/Effect'),
NoEffect : require('effects/NoEffect'),
SlideEffect : require('effects/SlideEffect'),
FadeEffect : require('effects/FadeEffect')
};
}));
Loading

0 comments on commit 7b6aed1

Please sign in to comment.