diff --git a/doc/README.md b/doc/README.md
index 724966c69..def4eedf9 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -1349,7 +1349,7 @@ _.isNumber(8.4 * 5;
### `_.isObject(value)`
# [Ⓢ](https://github.com/bestiejs/lodash/blob/v0.3.2/lodash.js#L2873 "View in source") [Ⓣ][1]
-Checks if `value` is the language type of Object. *(e.g. arrays, functions, objects, regexps, `new Number(0)*`, and `new String('')`)
+Checks if `value` is the language type of Object. *(e.g. arrays, functions, objects, regexps, `new Number(0)`, and `new String('')`)*
#### Arguments
1. `value` *(Mixed)*: The value to check.
diff --git a/vendor/benchmark.js/LICENSE.txt b/vendor/benchmark.js/LICENSE.txt
index 1ed2ebb06..e33e63f7e 100644
--- a/vendor/benchmark.js/LICENSE.txt
+++ b/vendor/benchmark.js/LICENSE.txt
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/benchmark.js/README.md b/vendor/benchmark.js/README.md
index 0756fbb20..7b2a42ef6 100644
--- a/vendor/benchmark.js/README.md
+++ b/vendor/benchmark.js/README.md
@@ -114,25 +114,6 @@ suite.add('RegExp#test', function() {
// > Fastest is String#indexOf
~~~
-## Cloning this repo
-
-To clone this repository including all submodules, using Git 1.6.5 or later:
-
-~~~ bash
-git clone --recursive https://github.com/bestiejs/benchmark.js.git
-cd benchmark.js
-~~~
-
-For older Git versions, just use:
-
-~~~ bash
-git clone https://github.com/bestiejs/benchmark.js.git
-cd benchmark.js
-git submodule update --init
-~~~
-
-Feel free to fork and send pull requests if you see improvements!
-
## Footnotes
1. Benchmark.js has been tested in at least Adobe AIR 2.6, Chrome 5-15, Firefox 1.5-8, IE 6-10, Opera 9.25-11.52, Safari 2-5.1.1, Node.js 0.4.8-0.6.1, Narwhal 0.3.2, RingoJS 0.7-0.8, and Rhino 1.7RC3.
diff --git a/vendor/benchmark.js/benchmark.js b/vendor/benchmark.js/benchmark.js
index de403d97b..42d00a827 100644
--- a/vendor/benchmark.js/benchmark.js
+++ b/vendor/benchmark.js/benchmark.js
@@ -37,6 +37,9 @@
/** Used to check if an object is extensible */
var isExtensible = Object.isExtensible || function() { return true; };
+ /** Used to access Wade Simmons' Node microtime module */
+ var microtimeObject = req('microtime');
+
/** Used to access the browser's high resolution timer */
var perfObject = isHostType(window, 'performance') && performance;
@@ -46,6 +49,9 @@
perfObject.webkitNow && 'webkitNow'
);
+ /** Used to access Node's high resolution timer */
+ var processObject = isHostType(window, 'process') && process;
+
/** Used to check if an own property is enumerable */
var propertyIsEnumerable = {}.propertyIsEnumerable;
@@ -678,7 +684,14 @@
start = toInteger(start);
start = start < 0 ? max(length + start, 0) : min(start, length);
- deleteCount = min(max(toInteger(deleteCount), 0), length - start);
+
+ // support the de-facto SpiderMonkey extension
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice#Parameters
+ // https://bugs.ecmascript.org/show_bug.cgi?id=429
+ deleteCount = arguments.length == 1
+ ? length - start
+ : min(max(toInteger(deleteCount), 0), length - start);
+
return insert.call(object, start, deleteCount, slice.call(arguments, 2));
}
@@ -1884,6 +1897,21 @@
* 'onCycle': onCycle,
* 'onComplete': onComplete
* });
+ *
+ * // or name and options
+ * suite.add('foo', {
+ * 'fn': fn,
+ * 'onCycle': onCycle,
+ * 'onComplete': onComplete
+ * });
+ *
+ * // or options only
+ * suite.add({
+ * 'name': 'foo',
+ * 'fn': fn,
+ * 'onCycle': onCycle,
+ * 'onComplete': onComplete
+ * });
*/
function add(name, fn, options) {
var me = this,
@@ -2509,7 +2537,7 @@
if (ns.stop) {
ns.start();
while (!(measured = ns.microseconds())) { }
- } else if (perfName) {
+ } else if (ns[perfName]) {
divisor = 1e3;
measured = Function('n', 'var r,s=n.' + perfName + '();while(!(r=n.' + perfName + '()-s)){};return r')(ns);
} else {
@@ -2519,8 +2547,14 @@
}
else if (unit == 'ns') {
divisor = 1e9;
- begin = ns.nanoTime();
- while (!(measured = ns.nanoTime() - begin)) { }
+ if (ns.nanoTime) {
+ begin = ns.nanoTime();
+ while (!(measured = ns.nanoTime() - begin)) { }
+ } else {
+ begin = (begin = ns())[0] + (begin[1] / divisor);
+ while (!(measured = ((measured = ns())[0] + (measured[1] / divisor)) - begin)) { }
+ divisor = 1;
+ }
}
else {
begin = new ns;
@@ -2575,9 +2609,13 @@
timers.push({ 'ns': timer.ns, 'res': getRes('us'), 'unit': 'us' });
}
- // detect Node's microtime module:
- // npm install microtime
- if ((timer.ns = (req('microtime') || { 'now': 0 }).now)) {
+ // detect Node's nanosecond resolution timer available in Node >= 0.8
+ if (processObject && typeof (timer.ns = processObject.hrtime) == 'function') {
+ timers.push({ 'ns': timer.ns, 'res': getRes('ns'), 'unit': 'ns' });
+ }
+
+ // detect Wade Simmons' Node microtime module
+ if (microtimeObject && typeof (timer.ns = microtimeObject.now) == 'function') {
timers.push({ 'ns': timer.ns, 'res': getRes('us'), 'unit': 'us' });
}
@@ -2596,10 +2634,17 @@
}
// use API of chosen timer
if (timer.unit == 'ns') {
- extend(template, {
- 'begin': 's$=n$.nanoTime()',
- 'end': 'r$=(n$.nanoTime()-s$)/1e9'
- });
+ if (timer.ns.nanoTime) {
+ extend(template, {
+ 'begin': 's$=n$.nanoTime()',
+ 'end': 'r$=(n$.nanoTime()-s$)/1e9'
+ });
+ } else {
+ extend(template, {
+ 'begin': 's$=n$()',
+ 'end': 'r$=n$(s$);r$=r$[0]+(r$[1]/1e9)'
+ });
+ }
}
else if (timer.unit == 'us') {
if (timer.ns.stop) {
diff --git a/vendor/docdown/src/DocDown/Generator.php b/vendor/docdown/src/DocDown/Generator.php
index 768273f5f..2756b44b9 100644
--- a/vendor/docdown/src/DocDown/Generator.php
+++ b/vendor/docdown/src/DocDown/Generator.php
@@ -87,9 +87,28 @@ class Generator {
* @returns {String} The formatted string.
*/
private static function format($string) {
- // mark numbers as code and italicize parentheses
- return trim(preg_replace('/(^|\s)(\([^)]+\))/', '$1*$2*',
- preg_replace('/ (-?\d+(?:.\d+)?)(?!\.[^\n])/', ' `$1`', $string)));
+ $counter = 0;
+
+ // tokenize inline code snippets
+ preg_match_all('/`[^`]+`/', $string, $tokenized);
+ $tokenized = $tokenized[0];
+ foreach ($tokenized as $snippet) {
+ $string = str_replace($snippet, '__token' . ($counter++) .'__', $string);
+ }
+
+ // italicize parentheses
+ $string = preg_replace('/(^|\s)(\([^)]+\))/', '$1*$2*', $string);
+
+ // mark numbers as inline code
+ $string = preg_replace('/ (-?\d+(?:.\d+)?)(?!\.[^\n])/', ' `$1`', $string);
+
+ // detokenize inline code snippets
+ $counter = 0;
+ foreach ($tokenized as $snippet) {
+ $string = str_replace('__token' . ($counter++) . '__', $snippet, $string);
+ }
+
+ return trim($string);
}
/**
@@ -388,4 +407,4 @@ class Generator {
return trim(preg_replace('/ +\n/', "\n", join($result, "\n")));
}
}
-?>
\ No newline at end of file
+?>
diff --git a/vendor/requirejs/require.js b/vendor/requirejs/require.js
index 0c6f15280..a96ce43fc 100644
--- a/vendor/requirejs/require.js
+++ b/vendor/requirejs/require.js
@@ -1,5 +1,5 @@
/** vim: et:ts=4:sw=4:sts=4
- * @license RequireJS 2.0.2 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.
+ * @license RequireJS 2.0.4 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.
* Available via the MIT or new BSD license.
* see: http://github.com/jrburke/requirejs for details
*/
@@ -10,9 +10,9 @@ var requirejs, require, define;
(function (global) {
'use strict';
- var version = '2.0.2',
+ var version = '2.0.4',
commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
- cjsRequireRegExp = /require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
+ cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
jsSuffixRegExp = /\.js$/,
currDirRegExp = /^\.\//,
ostring = Object.prototype.toString,
@@ -288,6 +288,7 @@ var requirejs, require, define;
*/
function normalize(name, baseName, applyMap) {
var baseParts = baseName && baseName.split('/'),
+ normalizedBaseParts = baseParts,
map = config.map,
starMap = map && map['*'],
pkgName, pkgConfig, mapValue, nameParts, i, j, nameSegment,
@@ -302,17 +303,17 @@ var requirejs, require, define;
if (config.pkgs[baseName]) {
//If the baseName is a package name, then just treat it as one
//name to concat the name with.
- baseParts = [baseName];
+ normalizedBaseParts = baseParts = [baseName];
} else {
//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.
- baseParts = baseParts.slice(0, baseParts.length - 1);
+ normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);
}
- name = baseParts.concat(name.split('/'));
+ name = normalizedBaseParts.concat(name.split('/'));
trimDots(name);
//Some use of packages may use a . path to reference the
@@ -450,17 +451,7 @@ var requirejs, require, define;
} else {
//A regular module.
normalizedName = normalize(name, parentName, applyMap);
-
- //Calculate url for the module, if it has a name.
- //Use name here since nameToUrl also calls normalize,
- //and for relative names that are outside the baseUrl
- //this causes havoc. Was thinking of just removing
- //parentModuleMap to avoid extra normalization, but
- //normalize() still does a dot removal because of
- //issue #142, so just pass in name here and redo
- //the normalization. Paths outside baseUrl are just
- //messy to support.
- url = context.nameToUrl(name, null, parentModuleMap);
+ url = context.nameToUrl(normalizedName);
}
}
@@ -1583,20 +1574,21 @@ var requirejs, require, define;
moduleNamePlusExt = moduleNamePlusExt.substring(0, index);
}
- return context.nameToUrl(moduleNamePlusExt, ext, relModuleMap);
+ return context.nameToUrl(normalize(moduleNamePlusExt, relModuleMap && relModuleMap.id, true),
+ ext);
},
/**
* Converts a module name to a file path. Supports cases where
* moduleName may actually be just an URL.
+ * Note that it **does not** call normalize on the moduleName,
+ * it is assumed to have already been normalized. This is an
+ * internal API, not a public one. Use toUrl for the public API.
*/
- nameToUrl: function (moduleName, ext, relModuleMap) {
+ nameToUrl: function (moduleName, ext) {
var paths, pkgs, pkg, pkgPath, syms, i, parentModule, url,
parentPath;
- //Normalize module name if have a base relative module name to work from.
- moduleName = normalize(moduleName, relModuleMap && relModuleMap.id, true);
-
//If a colon is in the URL, it indicates a protocol is used and it is just
//an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?)
//or ends with .js, then assume the user meant to use an url and not a module id.
@@ -1822,6 +1814,7 @@ var requirejs, require, define;
document.createElement('script');
node.type = config.scriptType || 'text/javascript';
node.charset = 'utf-8';
+ node.async = true;
node.setAttribute('data-requirecontext', context.contextName);
node.setAttribute('data-requiremodule', moduleName);
@@ -1924,21 +1917,21 @@ var requirejs, require, define;
//baseUrl, if it is not already set.
dataMain = script.getAttribute('data-main');
if (dataMain) {
-
- //Pull off the directory of data-main for use as the
- //baseUrl.
- src = dataMain.split('/');
- mainScript = src.pop();
- subPath = src.length ? src.join('/') + '/' : './';
-
//Set final baseUrl if there is not already an explicit one.
if (!cfg.baseUrl) {
+ //Pull off the directory of data-main for use as the
+ //baseUrl.
+ src = dataMain.split('/');
+ mainScript = src.pop();
+ subPath = src.length ? src.join('/') + '/' : './';
+
cfg.baseUrl = subPath;
+ dataMain = mainScript;
}
//Strip off any trailing .js since dataMain is now
//like a module name.
- dataMain = mainScript.replace(jsSuffixRegExp, '');
+ dataMain = dataMain.replace(jsSuffixRegExp, '');
//Put the data-main script in the files to load.
cfg.deps = cfg.deps ? cfg.deps.concat(dataMain) : [dataMain];