Update vendors.

Former-commit-id: 44c2fe9fbfbf50aa64663d46b45d6fd2c778f2b7
This commit is contained in:
John-David Dalton
2012-08-16 21:20:54 -07:00
parent 79fbade92a
commit feff34b021
6 changed files with 98 additions and 64 deletions

View File

@@ -2,19 +2,19 @@
A [robust](http://calendar.perfplanet.com/2010/bulletproof-javascript-benchmarks/ "Bulletproof JavaScript benchmarks") benchmarking library that works on nearly all JavaScript platforms<sup><a name="fnref1" href="#fn1">1</a></sup>, supports high-resolution timers, and returns statistically significant results. As seen on [jsPerf](http://jsperf.com/). A [robust](http://calendar.perfplanet.com/2010/bulletproof-javascript-benchmarks/ "Bulletproof JavaScript benchmarks") benchmarking library that works on nearly all JavaScript platforms<sup><a name="fnref1" href="#fn1">1</a></sup>, supports high-resolution timers, and returns statistically significant results. As seen on [jsPerf](http://jsperf.com/).
## BestieJS ## Download
Benchmark.js is part of the BestieJS *"Best in Class"* module collection. This means we promote solid browser/environment support, ES5 precedents, unit testing, and plenty of documentation. * [Development source](https://raw.github.com/bestiejs/benchmark.js/1.0.0/benchmark.js)
## Documentation ## Dive in
The documentation for Benchmark.js can be viewed here: <http://benchmarkjs.com/docs> Weve got [API docs](http://benchmarkjs.com/docs) and [unit tests](http://benchmarkjs.com/tests).
For a list of upcoming features, check out our [roadmap](https://github.com/bestiejs/benchmark.js/wiki/Roadmap). For a list of upcoming features, check out our [roadmap](https://github.com/bestiejs/benchmark.js/wiki/Roadmap).
## Support ## Support
Benchmark.js has been tested in at least Adobe AIR 2.6, Chrome 5-21, Firefox 1.5-13, IE 6-9, Opera 9.25-12.01, Safari 3-6, Node.js 0.4.8-0.8.6, Narwhal 0.3.2, RingoJS 0.8, and Rhino 1.7RC3. Benchmark.js has been tested in at least Adobe AIR 3.1, Chrome 5-21, Firefox 1.5-13, IE 6-9, Opera 9.25-12.01, Safari 3-6, Node.js 0.8.6, Narwhal 0.3.2, RingoJS 0.8, and Rhino 1.7RC5.
## Installation and usage ## Installation and usage
@@ -118,6 +118,10 @@ suite.add('RegExp#test', function() {
// > Fastest is String#indexOf // > Fastest is String#indexOf
~~~ ~~~
## BestieJS
Benchmark.js is part of the BestieJS *"Best in Class"* module collection. This means we promote solid browser/environment support, ES5 precedents, unit testing, and plenty of documentation.
## Authors ## Authors
* [Mathias Bynens](http://mathiasbynens.be/) * [Mathias Bynens](http://mathiasbynens.be/)

View File

@@ -244,6 +244,36 @@
} catch(e) { } catch(e) {
support.getAllKeys = false; support.getAllKeys = false;
} }
/**
* Detect if own properties are iterated before inherited properties (all but IE < 9).
*
* @name iteratesOwnLast
* @memberOf Benchmark.support
* @type Boolean
*/
support.iteratesOwnFirst = (function() {
var props = [];
function ctor() { this.x = 1; }
ctor.prototype = { 'y': 1 };
for (var prop in new ctor) { props.push(prop); }
return props[0] == 'x';
}());
/**
* Detect if a node's [[Class]] is resolvable (all but IE < 9)
* and that the JS engine errors when attempting to coerce an object to a
* string without a `toString` property value of `typeof` "function".
*
* @name nodeClass
* @memberOf Benchmark.support
* @type Boolean
*/
try {
support.nodeClass = ({ 'toString': 0 } + '', toString.call(doc || 0) != '[object Object]');
} catch(e) {
support.nodeClass = true;
}
}()); }());
/** /**
@@ -583,14 +613,17 @@
while (++index < length) { while (++index < length) {
if ((index - start) in tail) { if ((index - start) in tail) {
object[index] = tail[index - start]; object[index] = tail[index - start];
} else { } else if (index in object) {
delete object[index]; delete object[index];
} }
} }
// delete excess elements // delete excess elements
deleteCount = deleteCount > elementCount ? deleteCount - elementCount : 0; deleteCount = deleteCount > elementCount ? deleteCount - elementCount : 0;
while (deleteCount--) { while (deleteCount--) {
delete object[length + deleteCount]; index = length + deleteCount;
if (index in object) {
delete object[index];
}
} }
object.length = length; object.length = length;
return result; return result;
@@ -941,7 +974,13 @@
// escape the `{` for Firefox 1 // escape the `{` for Firefox 1
result = (/^[^{]+\{([\s\S]*)}\s*$/.exec(fn) || 0)[1]; result = (/^[^{]+\{([\s\S]*)}\s*$/.exec(fn) || 0)[1];
} }
return (result || '').replace(/^\s+|\s+$/g, ''); // trim string
result = (result || '').replace(/^\s+|\s+$/g, '');
// detect strings containing only the "use strict" directive
return /^(?:\/\*+[\w|\W]*?\*\/|\/\/.*?[\n\r\u2028\u2029]|\s)*(["'])use strict\1;?$/.test(result)
? ''
: result;
} }
/** /**
@@ -994,36 +1033,43 @@
} }
/** /**
* Checks if the specified `value` is an object created by the `Object` * Checks if a given `value` is an object created by the `Object` constructor
* constructor assuming objects created by the `Object` constructor have no * assuming objects created by the `Object` constructor have no inherited
* inherited enumerable properties and assuming there are no `Object.prototype` * enumerable properties and that there are no `Object.prototype` extensions.
* extensions.
* *
* @private * @private
* @param {Mixed} value The value to check. * @param {Mixed} value The value to check.
* @returns {Boolean} Returns `true` if `value` is an object, else `false`. * @returns {Boolean} Returns `true` if the `value` is a plain `Object` object, else `false`.
*/ */
function isObject(value) { function isPlainObject(value) {
var ctor, // avoid non-objects and false positives for `arguments` objects in IE < 9
result = !!value && toString.call(value) == '[object Object]'; var result = false;
if (!(value && typeof value == 'object') || (noArgumentsClass && isArguments(value))) {
if (result && noArgumentsClass) { return result;
// avoid false positives for `arguments` objects in IE < 9
result = !isArguments(value);
} }
if (result) { // IE < 9 presents DOM nodes as `Object` objects except they have `toString`
// IE < 9 presents nodes like `Object` objects: // methods that are `typeof` "string" and still can coerce nodes to strings.
// IE < 8 are missing the node's constructor property // Also check that the constructor is `Object` (i.e. `Object instanceof Object`)
// IE 8 node constructors are typeof "object" var ctor = value.constructor;
ctor = value.constructor; if ((support.nodeClass || !(typeof value.toString != 'function' && typeof (value + '') == 'string')) &&
// check if the constructor is `Object` as `Object instanceof Object` is `true` (!isClassOf(ctor, 'Function') || ctor instanceof ctor)) {
if ((result = isClassOf(ctor, 'Function') && ctor instanceof ctor)) { // In most environments an object's own properties are iterated before
// An object's own properties are iterated before inherited properties. // its inherited properties. If the last iterated property is an object's
// If the last iterated key belongs to an object's own property then // own property then there are no inherited enumerable properties.
// there are no inherited enumerable properties. if (support.iteratesOwnFirst) {
forProps(value, function(subValue, subKey) { result = subKey; }); forProps(value, function(subValue, subKey) {
result = result === true || hasKey(value, result); result = subKey;
});
return result === false || hasKey(value, result);
} }
// IE < 9 iterates inherited properties before own properties. If the first
// iterated property is an object's own property then there are no inherited
// enumerable properties.
forProps(value, function(subValue, subKey) {
result = !hasKey(value, subKey);
return false;
});
return result === false;
} }
return result; return result;
} }
@@ -1265,7 +1311,7 @@
break; break;
case '[object Object]': case '[object Object]':
isObject(value) && (clone = new ctor); isPlainObject(value) && (clone = {});
break; break;
case '[object Number]': case '[object Number]':
@@ -2405,7 +2451,7 @@
var source = { var source = {
'setup': getSource(bench.setup, preprocess('m$.setup()')), 'setup': getSource(bench.setup, preprocess('m$.setup()')),
'fn': getSource(fn, preprocess('f$(' + fnArg + ')')), 'fn': getSource(fn, preprocess('m$.fn(' + fnArg + ')')),
'fnArg': fnArg, 'fnArg': fnArg,
'teardown': getSource(bench.teardown, preprocess('m$.teardown()')) 'teardown': getSource(bench.teardown, preprocess('m$.teardown()'))
}; };
@@ -3045,6 +3091,7 @@
/** /**
* The maximum time a benchmark is allowed to run before finishing (secs). * The maximum time a benchmark is allowed to run before finishing (secs).
*
* Note: Cycle delays aren't counted toward the maximum time. * Note: Cycle delays aren't counted toward the maximum time.
* *
* @memberOf Benchmark.options * @memberOf Benchmark.options

View File

@@ -1,4 +1,4 @@
# Docdown <sup>v1.0.0-pre</sup> # Docdown <sup>v1.0.0</sup>
A simple JSDoc to Markdown documentation generator. A simple JSDoc to Markdown documentation generator.
@@ -22,17 +22,6 @@ $markdown = docdown(array(
)); ));
~~~ ~~~
## Cloning this repo
To clone this repository just use:
~~~ bash
git clone https://github.com/docdown/docdown.git
cd docdown
~~~
Feel free to fork and send pull requests if you see improvements!
## Author ## Author
* [John-David Dalton](http://allyoucanleet.com/) * [John-David Dalton](http://allyoucanleet.com/)

View File

@@ -18,7 +18,7 @@ For a list of upcoming features, check out our [roadmap](https://github.com/best
## Support ## Support
Platform.js has been tested in at least Chrome 5-21, Firefox 1.5-13, IE 6-9, Opera 9.25-12.01, Safari 3-6, Node.js 0.4.8-0.8.6, Narwhal 0.3.2, RingoJS 0.8, and Rhino 1.7RC3. Platform.js has been tested in at least Adobe AIR 3.1, Chrome 5-21, Firefox 1.5-13, IE 6-9, Opera 9.25-12.01, Safari 3-6, Node.js 0.8.6, Narwhal 0.3.2, RingoJS 0.8, and Rhino 1.7RC5.
## Installation and usage ## Installation and usage

View File

@@ -1,12 +1,16 @@
# QUnit CLIB <sup>v1.0.0-pre</sup> # QUnit CLIB <sup>v1.0.0</sup>
## command-line interface boilerplate ## command-line interface boilerplate
QUnit CLIB helps extend QUnit's CLI support to many common CLI environments<sup><a name="fnref1" href="#fn1">1</a></sup>. QUnit CLIB helps extend QUnit's CLI support to many common CLI environments.
## Screenshot ## Screenshot
![QUnit CLIB brings QUnit to your favorite shell.](http://i.imgur.com/jpu9l.png) ![QUnit CLIB brings QUnit to your favorite shell.](http://i.imgur.com/jpu9l.png)
## Support
QUnit CLIB has been tested in at least Node.js 0.4.8-0.8.6, Narwhal v0.3.2, RingoJS v0.8.0, and Rhino v1.7RC3-RC5.
## Usage ## Usage
~~~ js ~~~ js
@@ -41,23 +45,11 @@ QUnit CLIB helps extend QUnit's CLI support to many common CLI environments<sup>
}(typeof global == 'object' && global || this)); }(typeof global == 'object' && global || this));
~~~ ~~~
## Cloning this repo
To clone this repository just use:
~~~ bash
git clone https://github.com/jdalton/qunit-clib.git
cd qunit-clib
~~~
Feel free to fork and send pull requests if you see improvements!
## Footnotes ## Footnotes
1. QUnit CLIB has been tested in at least Node.js v0.4.8-0.6.1, Narwhal v0.3.2, RingoJS v0.7.0-0.8.0, and Rhino v1.7RC3. 1. QUnit v1.3.0 does not work with Narwhal or Ringo < v0.8.0
<a name="fn1" title="Jump back to footnote 1 in the text." href="#fnref1">&#8617;</a>
2. QUnit v1.3.0 does not work with Narwhal or Ringo < v0.8.0 2. Rhino v1.7RC4 does not support timeout fallbacks `clearTimeout` and `setTimeout`
## Author ## Author

View File

@@ -1,5 +1,5 @@
/*! /*!
* QUnit CLI Boilerplate v1.0.0-pre * QUnit CLI Boilerplate v1.0.0
* Copyright 2011-2012 John-David Dalton <http://allyoucanleet.com/> * Copyright 2011-2012 John-David Dalton <http://allyoucanleet.com/>
* Based on a gist by Jörn Zaefferer <https://gist.github.com/722381> * Based on a gist by Jörn Zaefferer <https://gist.github.com/722381>
* Available under MIT license <http://mths.be/mit> * Available under MIT license <http://mths.be/mit>
@@ -92,6 +92,8 @@
* @returns {Number} The the ID of the timeout. * @returns {Number} The the ID of the timeout.
*/ */
function schedule(fn, delay, args, repeated) { function schedule(fn, delay, args, repeated) {
// Rhino 1.7RC4 will error assigning `task` below
// https://bugzilla.mozilla.org/show_bug.cgi?id=775566
var task = ids[++counter] = new JavaAdapter(java.util.TimerTask, { var task = ids[++counter] = new JavaAdapter(java.util.TimerTask, {
'run': function() { 'run': function() {
fn.apply(global, args); fn.apply(global, args);