0
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-03-02 02:29:24 +01:00

Merge branch 'master' into docs_derp

Conflicts:
	docs/assets/css/pack.min.css
	docs/assets/js/customize.min.js
	docs/assets/js/docs.min.js
This commit is contained in:
Mark Otto 2014-01-13 22:43:18 -08:00
commit eca81939cc
15 changed files with 168 additions and 76 deletions

View File

@ -127,7 +127,7 @@ module.exports = function (grunt) {
}, },
customize: { customize: {
options: { options: {
banner: '<%= bannerDocs %>', preserveComments: 'some',
report: 'min' report: 'min'
}, },
src: [ src: [
@ -143,7 +143,7 @@ module.exports = function (grunt) {
}, },
docsJs: { docsJs: {
options: { options: {
banner: '<%= bannerDocs %>', preserveComments: 'some',
report: 'min' report: 'min'
}, },
src: [ src: [
@ -194,7 +194,6 @@ module.exports = function (grunt) {
cssmin: { cssmin: {
compress: { compress: {
options: { options: {
banner: '<%= bannerDocs %>',
keepSpecialComments: '*', keepSpecialComments: '*',
noAdvanced: true, // turn advanced optimizations off until it's fixed in clean-css noAdvanced: true, // turn advanced optimizations off until it's fixed in clean-css
report: 'min', report: 'min',

View File

@ -1,7 +1,7 @@
/*csslint ids: false, overqualified-elements: false, fallback-colors: false*/ /*csslint ids: false, overqualified-elements: false, fallback-colors: false*/
/*! /*!
* Bootstrap Docs (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2014 Twitter, Inc.
*
* Licensed under the Creative Commons Attribution 3.0 Unported License. For * Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see http://creativecommons.org/licenses/by/3.0/. * details, see http://creativecommons.org/licenses/by/3.0/.
*/ */

File diff suppressed because one or more lines are too long

View File

@ -3,8 +3,8 @@
// ++++++++++++++++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++++++++++++++++
/*! /*!
* JavaScript for Bootstrap's docs (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2014 Twitter, Inc.
*
* Licensed under the Creative Commons Attribution 3.0 Unported License. For * Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see http://creativecommons.org/licenses/by/3.0/. * details, see http://creativecommons.org/licenses/by/3.0/.
*/ */

View File

@ -1,4 +1,5 @@
/* Blob.js /*!
* Blob.js
* A Blob implementation. * A Blob implementation.
* 2013-12-27 * 2013-12-27
* *

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,5 @@
/*! /*!
* Bootstrap Customizer (http://getbootstrap.com/customize/)
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2014 Twitter, Inc.
* *
* Licensed under the Creative Commons Attribution 3.0 Unported License. For * Licensed under the Creative Commons Attribution 3.0 Unported License. For

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,5 @@
/* FileSaver.js /*!
* FileSaver.js
* A saveAs() FileSaver implementation. * A saveAs() FileSaver implementation.
* 2013-12-27 * 2013-12-27
* *

View File

@ -1,4 +1,4 @@
/* /*!
Holder - 2.3 - client side image placeholders Holder - 2.3 - client side image placeholders
(c) 2012-2014 Ivan Malopinsky / http://imsky.co (c) 2012-2014 Ivan Malopinsky / http://imsky.co

View File

@ -1,11 +1,11 @@
/** /*!
JSZip - A Javascript class for generating and reading zip files JSZip - A Javascript class for generating and reading zip files
<http://stuartk.com/jszip> <http://stuartk.com/jszip>
(c) 2009-2012 Stuart Knightley <stuart [at] stuartk.com> (c) 2009-2012 Stuart Knightley <stuart [at] stuartk.com>
Dual licenced under the MIT license or GPLv3. See LICENSE.markdown. Dual licenced under the MIT license or GPLv3. See LICENSE.markdown.
*/
/**
Usage: Usage:
zip = new JSZip(); zip = new JSZip();
zip.file("hello.txt", "Hello, World!").file("tempfile", "nothing"); zip.file("hello.txt", "Hello, World!").file("tempfile", "nothing");

View File

@ -1,4 +1,4 @@
/** @license uglifyweb Copyright (c) 2011, The Dojo Foundation All Rights Reserved. /*! @license uglifyweb Copyright (c) 2011, The Dojo Foundation All Rights Reserved.
* The parts that are unique to this repo (not much, just some wrapper code) are * The parts that are unique to this repo (not much, just some wrapper code) are
* released under the new BSD and MIT licenses. * released under the new BSD and MIT licenses.
* *

View File

@ -13,6 +13,8 @@ Mini-language:
//== This is a normal heading, which starts a section. Sections group variables together. //== This is a normal heading, which starts a section. Sections group variables together.
//## Optional description for the heading //## Optional description for the heading
//=== This is a subheading.
//** Optional description for the following variable. You **can** use Markdown in descriptions to discuss `<html>` stuff. //** Optional description for the following variable. You **can** use Markdown in descriptions to discuss `<html>` stuff.
@foo: #ffff; @foo: #ffff;

View File

@ -1,9 +1,9 @@
/** /**
* QUnit - A JavaScript Unit Testing Framework * QUnit 1.0.0 - A JavaScript Unit Testing Framework
* *
* http://docs.jquery.com/QUnit * http://docs.jquery.com/QUnit
* *
* Copyright (c) 2012 John Resig, Jörn Zaefferer * Copyright (c) 2011 John Resig, Jörn Zaefferer
* Dual licensed under the MIT (MIT-LICENSE.txt) * Dual licensed under the MIT (MIT-LICENSE.txt)
* or GPL (GPL-LICENSE.txt) licenses. * or GPL (GPL-LICENSE.txt) licenses.
*/ */
@ -224,9 +224,3 @@
top: -10000px; top: -10000px;
left: -10000px; left: -10000px;
} }
/** Runoff */
#qunit-fixture {
display:none;
}

View File

@ -1,9 +1,9 @@
/** /**
* QUnit - A JavaScript Unit Testing Framework * QUnit 1.0.0 - A JavaScript Unit Testing Framework
* *
* http://docs.jquery.com/QUnit * http://docs.jquery.com/QUnit
* *
* Copyright (c) 2012 John Resig, Jörn Zaefferer * Copyright (c) 2011 John Resig, Jörn Zaefferer
* Dual licensed under the MIT (MIT-LICENSE.txt) * Dual licensed under the MIT (MIT-LICENSE.txt)
* or GPL (GPL-LICENSE.txt) licenses. * or GPL (GPL-LICENSE.txt) licenses.
*/ */
@ -48,7 +48,7 @@ Test.prototype = {
setup: function() { setup: function() {
if (this.module != config.previousModule) { if (this.module != config.previousModule) {
if ( config.previousModule ) { if ( config.previousModule ) {
QUnit.moduleDone( { runLoggingCallbacks('moduleDone', QUnit, {
name: config.previousModule, name: config.previousModule,
failed: config.moduleStats.bad, failed: config.moduleStats.bad,
passed: config.moduleStats.all - config.moduleStats.bad, passed: config.moduleStats.all - config.moduleStats.bad,
@ -57,7 +57,7 @@ Test.prototype = {
} }
config.previousModule = this.module; config.previousModule = this.module;
config.moduleStats = { all: 0, bad: 0 }; config.moduleStats = { all: 0, bad: 0 };
QUnit.moduleStart( { runLoggingCallbacks( 'moduleStart', QUnit, {
name: this.module name: this.module
} ); } );
} }
@ -71,8 +71,9 @@ Test.prototype = {
extend(this.testEnvironment, this.testEnvironmentArg); extend(this.testEnvironment, this.testEnvironmentArg);
} }
QUnit.testStart( { runLoggingCallbacks( 'testStart', QUnit, {
name: this.testName name: this.testName,
module: this.module
}); });
// allow utility functions to access the current test environment // allow utility functions to access the current test environment
@ -210,8 +211,9 @@ Test.prototype = {
fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset); fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset);
} }
QUnit.testDone( { runLoggingCallbacks( 'testDone', QUnit, {
name: this.testName, name: this.testName,
module: this.module,
failed: bad, failed: bad,
passed: this.assertions.length - bad, passed: this.assertions.length - bad,
total: this.assertions.length total: this.assertions.length
@ -310,8 +312,8 @@ var QUnit = {
result: a, result: a,
message: msg message: msg
}; };
msg = escapeHtml(msg); msg = escapeInnerText(msg);
QUnit.log(details); runLoggingCallbacks( 'log', QUnit, details );
config.current.assertions.push({ config.current.assertions.push({
result: a, result: a,
message: msg message: msg
@ -387,8 +389,8 @@ var QUnit = {
QUnit.ok(ok, message); QUnit.ok(ok, message);
}, },
start: function() { start: function(count) {
config.semaphore--; config.semaphore -= count || 1;
if (config.semaphore > 0) { if (config.semaphore > 0) {
// don't start until equal number of stop-calls // don't start until equal number of stop-calls
return; return;
@ -416,20 +418,30 @@ var QUnit = {
} }
}, },
stop: function(timeout) { stop: function(count) {
config.semaphore++; config.semaphore += count || 1;
config.blocking = true; config.blocking = true;
if ( timeout && defined.setTimeout ) { if ( config.testTimeout && defined.setTimeout ) {
clearTimeout(config.timeout); clearTimeout(config.timeout);
config.timeout = window.setTimeout(function() { config.timeout = window.setTimeout(function() {
QUnit.ok( false, "Test timed out" ); QUnit.ok( false, "Test timed out" );
config.semaphore = 1;
QUnit.start(); QUnit.start();
}, timeout); }, config.testTimeout);
} }
} }
}; };
//We want access to the constructor's prototype
(function() {
function F(){};
F.prototype = QUnit;
QUnit = new F();
//Make F QUnit's constructor so that we can add to the prototype later
QUnit.constructor = F;
})();
// Backwards compatibility, deprecated // Backwards compatibility, deprecated
QUnit.equals = QUnit.equal; QUnit.equals = QUnit.equal;
QUnit.same = QUnit.deepEqual; QUnit.same = QUnit.deepEqual;
@ -453,7 +465,16 @@ var config = {
// by default, modify document.title when suite is done // by default, modify document.title when suite is done
altertitle: true, altertitle: true,
urlConfig: ['noglobals', 'notrycatch'] urlConfig: ['noglobals', 'notrycatch'],
//logging callback queues
begin: [],
done: [],
log: [],
testStart: [],
testDone: [],
moduleStart: [],
moduleDone: []
}; };
// Load paramaters // Load paramaters
@ -618,10 +639,10 @@ extend(QUnit, {
expected: expected expected: expected
}; };
message = escapeHtml(message) || (result ? "okay" : "failed"); message = escapeInnerText(message) || (result ? "okay" : "failed");
message = '<span class="test-message">' + message + "</span>"; message = '<span class="test-message">' + message + "</span>";
expected = escapeHtml(QUnit.jsDump.parse(expected)); expected = escapeInnerText(QUnit.jsDump.parse(expected));
actual = escapeHtml(QUnit.jsDump.parse(actual)); actual = escapeInnerText(QUnit.jsDump.parse(actual));
var output = message + '<table><tr class="test-expected"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>'; var output = message + '<table><tr class="test-expected"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>';
if (actual != expected) { if (actual != expected) {
output += '<tr class="test-actual"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>'; output += '<tr class="test-actual"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>';
@ -631,12 +652,12 @@ extend(QUnit, {
var source = sourceFromStacktrace(); var source = sourceFromStacktrace();
if (source) { if (source) {
details.source = source; details.source = source;
output += '<tr class="test-source"><th>Source: </th><td><pre>' + escapeHtml(source) + '</pre></td></tr>'; output += '<tr class="test-source"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr>';
} }
} }
output += "</table>"; output += "</table>";
QUnit.log(details); runLoggingCallbacks( 'log', QUnit, details );
config.current.assertions.push({ config.current.assertions.push({
result: !!result, result: !!result,
@ -657,23 +678,28 @@ extend(QUnit, {
extend: extend, extend: extend,
id: id, id: id,
addEvent: addEvent, addEvent: addEvent
});
//QUnit.constructor is set to the empty F() above so that we can add to it's prototype later
//Doing this allows us to tell if the following methods have been overwritten on the actual
//QUnit object, which is a deprecated way of using the callbacks.
extend(QUnit.constructor.prototype, {
// Logging callbacks; all receive a single argument with the listed properties // Logging callbacks; all receive a single argument with the listed properties
// run test/logs.html for any related changes // run test/logs.html for any related changes
begin: function() {}, begin: registerLoggingCallback('begin'),
// done: { failed, passed, total, runtime } // done: { failed, passed, total, runtime }
done: function() {}, done: registerLoggingCallback('done'),
// log: { result, actual, expected, message } // log: { result, actual, expected, message }
log: function() {}, log: registerLoggingCallback('log'),
// testStart: { name } // testStart: { name }
testStart: function() {}, testStart: registerLoggingCallback('testStart'),
// testDone: { name, failed, passed, total } // testDone: { name, failed, passed, total }
testDone: function() {}, testDone: registerLoggingCallback('testDone'),
// moduleStart: { name } // moduleStart: { name }
moduleStart: function() {}, moduleStart: registerLoggingCallback('moduleStart'),
// moduleDone: { name, failed, passed, total } // moduleDone: { name, failed, passed, total }
moduleDone: function() {} moduleDone: registerLoggingCallback('moduleDone')
}); });
if ( typeof document === "undefined" || document.readyState === "complete" ) { if ( typeof document === "undefined" || document.readyState === "complete" ) {
@ -681,7 +707,7 @@ if ( typeof document === "undefined" || document.readyState === "complete" ) {
} }
QUnit.load = function() { QUnit.load = function() {
QUnit.begin({}); runLoggingCallbacks( 'begin', QUnit, {} );
// Initialize the config, saving the execution queue // Initialize the config, saving the execution queue
var oldconfig = extend({}, config); var oldconfig = extend({}, config);
@ -761,7 +787,7 @@ function done() {
// Log the last module results // Log the last module results
if ( config.currentModule ) { if ( config.currentModule ) {
QUnit.moduleDone( { runLoggingCallbacks( 'moduleDone', QUnit, {
name: config.currentModule, name: config.currentModule,
failed: config.moduleStats.bad, failed: config.moduleStats.bad,
passed: config.moduleStats.all - config.moduleStats.bad, passed: config.moduleStats.all - config.moduleStats.bad,
@ -803,7 +829,7 @@ function done() {
].join(" "); ].join(" ");
} }
QUnit.done( { runLoggingCallbacks( 'done', QUnit, {
failed: config.stats.bad, failed: config.stats.bad,
passed: passed, passed: passed,
total: config.stats.all, total: config.stats.all,
@ -855,16 +881,14 @@ function sourceFromStacktrace() {
} }
} }
function escapeHtml(s) { function escapeInnerText(s) {
if (!s) { if (!s) {
return ""; return "";
} }
s = s + ""; s = s + "";
return s.replace(/[\&"<>\\]/g, function(s) { return s.replace(/[\&<>]/g, function(s) {
switch(s) { switch(s) {
case "&": return "&amp;"; case "&": return "&amp;";
case "\\": return "\\\\";
case '"': return '\"';
case "<": return "&lt;"; case "<": return "&lt;";
case ">": return "&gt;"; case ">": return "&gt;";
default: return s; default: return s;
@ -974,9 +998,27 @@ function id(name) {
document.getElementById( name ); document.getElementById( name );
} }
function registerLoggingCallback(key){
return function(callback){
config[key].push( callback );
};
}
// Supports deprecated method of completely overwriting logging callbacks
function runLoggingCallbacks(key, scope, args) {
//debugger;
var callbacks;
if ( QUnit.hasOwnProperty(key) ) {
QUnit[key].call(scope, args);
} else {
callbacks = config[key];
for( var i = 0; i < callbacks.length; i++ ) {
callbacks[i].call( scope, args );
}
}
}
// Test for equality any JavaScript type. // Test for equality any JavaScript type.
// Discussions and reference: http://philrathe.com/articles/equiv
// Test suites: http://philrathe.com/tests/equiv
// Author: Philippe Rathé <prathe@gmail.com> // Author: Philippe Rathé <prathe@gmail.com>
QUnit.equiv = function () { QUnit.equiv = function () {