railsstrap 3.2.0.3 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/lib/railsstrap/constants.rb +1 -1
  3. data/vendor/assets/bower_components/bootstrap/Gruntfile.js +98 -76
  4. data/vendor/assets/bower_components/bootstrap/README.md +25 -23
  5. data/vendor/assets/bower_components/bootstrap/bower.json +3 -3
  6. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css +26 -11
  7. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css.map +1 -1
  8. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +2 -2
  9. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css +286 -131
  10. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css.map +1 -1
  11. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css +2 -2
  12. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +1 -1
  13. data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.js +340 -178
  14. data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.min.js +3 -2
  15. data/vendor/assets/bower_components/bootstrap/dist/js/npm.js +13 -0
  16. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg +1 -1
  17. data/vendor/assets/bower_components/bootstrap/grunt/bs-commonjs-generator.js +23 -0
  18. data/vendor/assets/bower_components/bootstrap/grunt/bs-lessdoc-parser.js +7 -5
  19. data/vendor/assets/bower_components/bootstrap/grunt/sauce_browsers.yml +1 -1
  20. data/vendor/assets/bower_components/bootstrap/js/affix.js +43 -23
  21. data/vendor/assets/bower_components/bootstrap/js/alert.js +6 -4
  22. data/vendor/assets/bower_components/bootstrap/js/button.js +16 -10
  23. data/vendor/assets/bower_components/bootstrap/js/carousel.js +26 -10
  24. data/vendor/assets/bower_components/bootstrap/js/collapse.js +69 -28
  25. data/vendor/assets/bower_components/bootstrap/js/dropdown.js +20 -10
  26. data/vendor/assets/bower_components/bootstrap/js/modal.js +22 -21
  27. data/vendor/assets/bower_components/bootstrap/js/popover.js +13 -7
  28. data/vendor/assets/bower_components/bootstrap/js/scrollspy.js +12 -7
  29. data/vendor/assets/bower_components/bootstrap/js/tab.js +41 -16
  30. data/vendor/assets/bower_components/bootstrap/js/tooltip.js +60 -39
  31. data/vendor/assets/bower_components/bootstrap/js/transition.js +1 -1
  32. data/vendor/assets/bower_components/bootstrap/less/button-groups.less +16 -9
  33. data/vendor/assets/bower_components/bootstrap/less/buttons.less +7 -4
  34. data/vendor/assets/bower_components/bootstrap/less/carousel.less +24 -0
  35. data/vendor/assets/bower_components/bootstrap/less/code.less +1 -0
  36. data/vendor/assets/bower_components/bootstrap/less/component-animations.less +5 -2
  37. data/vendor/assets/bower_components/bootstrap/less/dropdowns.less +3 -5
  38. data/vendor/assets/bower_components/bootstrap/less/forms.less +44 -25
  39. data/vendor/assets/bower_components/bootstrap/less/glyphicons.less +2 -1
  40. data/vendor/assets/bower_components/bootstrap/less/jumbotron.less +4 -4
  41. data/vendor/assets/bower_components/bootstrap/less/list-group.less +1 -0
  42. data/vendor/assets/bower_components/bootstrap/less/media.less +27 -36
  43. data/vendor/assets/bower_components/bootstrap/less/mixins/buttons.less +2 -0
  44. data/vendor/assets/bower_components/bootstrap/less/mixins/forms.less +5 -1
  45. data/vendor/assets/bower_components/bootstrap/less/mixins/image.less +0 -1
  46. data/vendor/assets/bower_components/bootstrap/less/mixins/labels.less +1 -1
  47. data/vendor/assets/bower_components/bootstrap/less/mixins/vendor-prefixes.less +6 -3
  48. data/vendor/assets/bower_components/bootstrap/less/modals.less +2 -3
  49. data/vendor/assets/bower_components/bootstrap/less/navbar.less +29 -25
  50. data/vendor/assets/bower_components/bootstrap/less/navs.less +3 -1
  51. data/vendor/assets/bower_components/bootstrap/less/normalize.less +5 -3
  52. data/vendor/assets/bower_components/bootstrap/less/pager.less +1 -2
  53. data/vendor/assets/bower_components/bootstrap/less/pagination.less +1 -1
  54. data/vendor/assets/bower_components/bootstrap/less/panels.less +21 -3
  55. data/vendor/assets/bower_components/bootstrap/less/popovers.less +5 -4
  56. data/vendor/assets/bower_components/bootstrap/less/print.less +102 -96
  57. data/vendor/assets/bower_components/bootstrap/less/progress-bars.less +1 -19
  58. data/vendor/assets/bower_components/bootstrap/less/responsive-embed.less +2 -1
  59. data/vendor/assets/bower_components/bootstrap/less/scaffolding.less +1 -1
  60. data/vendor/assets/bower_components/bootstrap/less/tables.less +11 -10
  61. data/vendor/assets/bower_components/bootstrap/less/theme.less +12 -10
  62. data/vendor/assets/bower_components/bootstrap/less/thumbnails.less +1 -1
  63. data/vendor/assets/bower_components/bootstrap/less/type.less +0 -11
  64. data/vendor/assets/bower_components/bootstrap/less/utilities.less +0 -1
  65. data/vendor/assets/bower_components/bootstrap/less/variables.less +29 -19
  66. data/vendor/assets/bower_components/bootstrap/package.json +20 -19
  67. metadata +4 -3
  68. data/vendor/assets/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js +0 -41
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e12bab1aacc0c5c73e8fcc54e6d9602d58b835f
4
- data.tar.gz: e12a9d052d2d9f1b06c9a9d879424ccaacee751b
3
+ metadata.gz: 576cfff798a3f38bbdcf0268a8177f0d014af88c
4
+ data.tar.gz: 9d433b38d88e8a48020fa97f0c24d8c04c69134d
5
5
  SHA512:
6
- metadata.gz: 4997f111d82f7dfce5cea8a3a06d4c4c083129c50a1588cee6b028d083dc1b2ff2b978cb7f04bcd8f7bef5360bd274baf315d717bd0a893b6c1fadb72b823941
7
- data.tar.gz: 0fdaff045e68a40440988afab5211620069144d817474b02ddda572e965bf5d7663cc69d8e0605673e241361c37b68f0aeec3ae3d85c884a1b3cdab830974255
6
+ metadata.gz: 2b31ade8e0cd02f676c593b7deaf183ae816017a1f28018cf2f5f0615b75d2251fe3e03640d6ad50d4025fd6bd6a90dc1555379674943e4061e36d582b36c208
7
+ data.tar.gz: 4b9109e82154b84ade8438933212932bcb8bcac474d041331f06e498a071196e04845f46a6dc3a2ca0a3ce73a18125e4082a217acc5d2901c3a6091b99dc473c
@@ -1,6 +1,6 @@
1
1
  module Railsstrap
2
2
  module Constants
3
3
  #we follow along with Bootstrap's version number for easy identification
4
- VERSION = '3.2.0.3'
4
+ VERSION = '3.3.0'
5
5
  end
6
6
  end
@@ -18,9 +18,15 @@ module.exports = function (grunt) {
18
18
  var fs = require('fs');
19
19
  var path = require('path');
20
20
  var npmShrinkwrap = require('npm-shrinkwrap');
21
- var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js');
22
21
  var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
22
+ var getLessVarsData = function () {
23
+ var filePath = path.join(__dirname, 'less/variables.less');
24
+ var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' });
25
+ var parser = new BsLessdocParser(fileContent);
26
+ return { sections: parser.parseFile() };
27
+ };
23
28
  var generateRawFiles = require('./grunt/bs-raw-files-generator.js');
29
+ var generateCommonJSModule = require('./grunt/bs-commonjs-generator.js');
24
30
 
25
31
  // Project configuration.
26
32
  grunt.initConfig({
@@ -32,12 +38,26 @@ module.exports = function (grunt) {
32
38
  ' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
33
39
  ' * Licensed under <%= pkg.license.type %> (<%= pkg.license.url %>)\n' +
34
40
  ' */\n',
35
- // NOTE: This jqueryCheck code is duplicated in customizer.js; if making changes here, be sure to update the other copy too.
36
- jqueryCheck: 'if (typeof jQuery === \'undefined\') { throw new Error(\'Bootstrap\\\'s JavaScript requires jQuery\') }\n\n',
41
+ // NOTE: This jqueryCheck/jqueryVersionCheck code is duplicated in customizer.js;
42
+ // if making changes here, be sure to update the other copy too.
43
+ jqueryCheck: [
44
+ 'if (typeof jQuery === \'undefined\') {',
45
+ ' throw new Error(\'Bootstrap\\\'s JavaScript requires jQuery\')',
46
+ '}\n'
47
+ ].join('\n'),
48
+ jqueryVersionCheck: [
49
+ '+function ($) {',
50
+ ' var version = $.fn.jquery.split(\' \')[0].split(\'.\')',
51
+ ' if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {',
52
+ ' throw new Error(\'Bootstrap\\\'s JavaScript requires jQuery version 1.9.1 or higher\')',
53
+ ' }',
54
+ '}(jQuery);\n\n'
55
+ ].join('\n'),
37
56
 
38
57
  // Task configuration.
39
58
  clean: {
40
- dist: ['dist', 'docs/dist']
59
+ dist: 'dist',
60
+ docs: 'docs/dist'
41
61
  },
42
62
 
43
63
  jshint: {
@@ -50,7 +70,7 @@ module.exports = function (grunt) {
50
70
  },
51
71
  src: ['Gruntfile.js', 'grunt/*.js']
52
72
  },
53
- src: {
73
+ core: {
54
74
  src: 'js/*.js'
55
75
  },
56
76
  test: {
@@ -60,7 +80,7 @@ module.exports = function (grunt) {
60
80
  src: 'js/tests/unit/*.js'
61
81
  },
62
82
  assets: {
63
- src: ['docs/assets/js/_src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js']
83
+ src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js']
64
84
  }
65
85
  },
66
86
 
@@ -71,8 +91,8 @@ module.exports = function (grunt) {
71
91
  grunt: {
72
92
  src: '<%= jshint.grunt.src %>'
73
93
  },
74
- src: {
75
- src: '<%= jshint.src.src %>'
94
+ core: {
95
+ src: '<%= jshint.core.src %>'
76
96
  },
77
97
  test: {
78
98
  src: '<%= jshint.test.src %>'
@@ -87,7 +107,7 @@ module.exports = function (grunt) {
87
107
 
88
108
  concat: {
89
109
  options: {
90
- banner: '<%= banner %>\n<%= jqueryCheck %>',
110
+ banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>',
91
111
  stripBanners: false
92
112
  },
93
113
  bootstrap: {
@@ -113,27 +133,29 @@ module.exports = function (grunt) {
113
133
  options: {
114
134
  preserveComments: 'some'
115
135
  },
116
- bootstrap: {
136
+ core: {
117
137
  src: '<%= concat.bootstrap.dest %>',
118
138
  dest: 'dist/js/<%= pkg.name %>.min.js'
119
139
  },
120
140
  customize: {
141
+ // NOTE: This src list is duplicated in footer.html; if making changes here, be sure to update the other copy too.
121
142
  src: [
122
- 'docs/assets/js/_vendor/less.min.js',
123
- 'docs/assets/js/_vendor/jszip.min.js',
124
- 'docs/assets/js/_vendor/uglify.min.js',
125
- 'docs/assets/js/_vendor/blob.js',
126
- 'docs/assets/js/_vendor/filesaver.js',
143
+ 'docs/assets/js/vendor/less.min.js',
144
+ 'docs/assets/js/vendor/jszip.min.js',
145
+ 'docs/assets/js/vendor/uglify.min.js',
146
+ 'docs/assets/js/vendor/Blob.js',
147
+ 'docs/assets/js/vendor/FileSaver.js',
127
148
  'docs/assets/js/raw-files.min.js',
128
- 'docs/assets/js/_src/customizer.js'
149
+ 'docs/assets/js/src/customizer.js'
129
150
  ],
130
151
  dest: 'docs/assets/js/customize.min.js'
131
152
  },
132
153
  docsJs: {
154
+ // NOTE: This src list is duplicated in footer.html; if making changes here, be sure to update the other copy too.
133
155
  src: [
134
- 'docs/assets/js/_vendor/holder.js',
135
- 'docs/assets/js/_vendor/ZeroClipboard.min.js',
136
- 'docs/assets/js/_src/application.js'
156
+ 'docs/assets/js/vendor/holder.js',
157
+ 'docs/assets/js/vendor/ZeroClipboard.min.js',
158
+ 'docs/assets/js/src/application.js'
137
159
  ],
138
160
  dest: 'docs/assets/js/docs.min.js'
139
161
  }
@@ -155,9 +177,8 @@ module.exports = function (grunt) {
155
177
  sourceMapURL: '<%= pkg.name %>.css.map',
156
178
  sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map'
157
179
  },
158
- files: {
159
- 'dist/css/<%= pkg.name %>.css': 'less/bootstrap.less'
160
- }
180
+ src: 'less/bootstrap.less',
181
+ dest: 'dist/css/<%= pkg.name %>.css'
161
182
  },
162
183
  compileTheme: {
163
184
  options: {
@@ -167,9 +188,8 @@ module.exports = function (grunt) {
167
188
  sourceMapURL: '<%= pkg.name %>-theme.css.map',
168
189
  sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map'
169
190
  },
170
- files: {
171
- 'dist/css/<%= pkg.name %>-theme.css': 'less/theme.less'
172
- }
191
+ src: 'less/theme.less',
192
+ dest: 'dist/css/<%= pkg.name %>-theme.css'
173
193
  }
174
194
  },
175
195
 
@@ -199,7 +219,7 @@ module.exports = function (grunt) {
199
219
  src: 'dist/css/<%= pkg.name %>-theme.css'
200
220
  },
201
221
  docs: {
202
- src: 'docs/assets/css/_src/docs.css'
222
+ src: 'docs/assets/css/src/docs.css'
203
223
  },
204
224
  examples: {
205
225
  expand: true,
@@ -213,7 +233,7 @@ module.exports = function (grunt) {
213
233
  options: {
214
234
  csslintrc: 'less/.csslintrc'
215
235
  },
216
- src: [
236
+ dist: [
217
237
  'dist/css/bootstrap.css',
218
238
  'dist/css/bootstrap-theme.css'
219
239
  ],
@@ -225,7 +245,7 @@ module.exports = function (grunt) {
225
245
  ids: false,
226
246
  'overqualified-elements': false
227
247
  },
228
- src: 'docs/assets/css/_src/docs.css'
248
+ src: 'docs/assets/css/src/docs.css'
229
249
  }
230
250
  },
231
251
 
@@ -235,16 +255,18 @@ module.exports = function (grunt) {
235
255
  keepSpecialComments: '*',
236
256
  noAdvanced: true
237
257
  },
238
- core: {
239
- files: {
240
- 'dist/css/<%= pkg.name %>.min.css': 'dist/css/<%= pkg.name %>.css',
241
- 'dist/css/<%= pkg.name %>-theme.min.css': 'dist/css/<%= pkg.name %>-theme.css'
242
- }
258
+ minifyCore: {
259
+ src: 'dist/css/<%= pkg.name %>.css',
260
+ dest: 'dist/css/<%= pkg.name %>.min.css'
261
+ },
262
+ minifyTheme: {
263
+ src: 'dist/css/<%= pkg.name %>-theme.css',
264
+ dest: 'dist/css/<%= pkg.name %>-theme.min.css'
243
265
  },
244
266
  docs: {
245
267
  src: [
246
- 'docs/assets/css/_src/docs.css',
247
- 'docs/assets/css/_src/pygments-manni.css'
268
+ 'docs/assets/css/src/docs.css',
269
+ 'docs/assets/css/src/pygments-manni.css'
248
270
  ],
249
271
  dest: 'docs/assets/css/docs.min.css'
250
272
  }
@@ -277,27 +299,19 @@ module.exports = function (grunt) {
277
299
  dest: 'docs/examples/'
278
300
  },
279
301
  docs: {
280
- files: {
281
- 'docs/assets/css/_src/docs.css': 'docs/assets/css/_src/docs.css'
282
- }
302
+ src: 'docs/assets/css/src/docs.css',
303
+ dest: 'docs/assets/css/src/docs.css'
283
304
  }
284
305
  },
285
306
 
286
307
  copy: {
287
308
  fonts: {
288
- expand: true,
289
309
  src: 'fonts/*',
290
310
  dest: 'dist/'
291
311
  },
292
312
  docs: {
293
- expand: true,
294
- cwd: './dist',
295
- src: [
296
- '{css,js}/*.min.*',
297
- 'css/*.map',
298
- 'fonts/*'
299
- ],
300
- dest: 'docs/dist'
313
+ src: 'dist/*/*',
314
+ dest: 'docs/'
301
315
  }
302
316
  },
303
317
 
@@ -315,20 +329,17 @@ module.exports = function (grunt) {
315
329
  },
316
330
 
317
331
  jade: {
318
- compile: {
319
- options: {
320
- pretty: true,
321
- data: function () {
322
- var filePath = path.join(__dirname, 'less/variables.less');
323
- var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' });
324
- var parser = new BsLessdocParser(fileContent);
325
- return { sections: parser.parseFile() };
326
- }
327
- },
328
- files: {
329
- 'docs/_includes/customizer-variables.html': 'docs/_jade/customizer-variables.jade',
330
- 'docs/_includes/nav/customize.html': 'docs/_jade/customizer-nav.jade'
331
- }
332
+ options: {
333
+ pretty: true,
334
+ data: getLessVarsData
335
+ },
336
+ customizerVars: {
337
+ src: 'docs/_jade/customizer-variables.jade',
338
+ dest: 'docs/_includes/customizer-variables.html'
339
+ },
340
+ customizerNav: {
341
+ src: 'docs/_jade/customizer-nav.jade',
342
+ dest: 'docs/_includes/nav/customize.html'
332
343
  }
333
344
  },
334
345
 
@@ -340,7 +351,9 @@ module.exports = function (grunt) {
340
351
  reset: true,
341
352
  relaxerror: [
342
353
  'Bad value X-UA-Compatible for attribute http-equiv on element meta.',
343
- 'Element img is missing required attribute src.'
354
+ 'Element img is missing required attribute src.',
355
+ 'Attribute autocomplete not allowed on element input at this point.',
356
+ 'Attribute autocomplete not allowed on element button at this point.'
344
357
  ]
345
358
  },
346
359
  files: {
@@ -350,15 +363,15 @@ module.exports = function (grunt) {
350
363
 
351
364
  watch: {
352
365
  src: {
353
- files: '<%= jshint.src.src %>',
354
- tasks: ['jshint:src', 'qunit']
366
+ files: '<%= jshint.core.src %>',
367
+ tasks: ['jshint:src', 'qunit', 'concat']
355
368
  },
356
369
  test: {
357
370
  files: '<%= jshint.test.src %>',
358
371
  tasks: ['jshint:test', 'qunit']
359
372
  },
360
373
  less: {
361
- files: 'less/*.less',
374
+ files: 'less/**/*.less',
362
375
  tasks: 'less'
363
376
  }
364
377
  },
@@ -412,7 +425,7 @@ module.exports = function (grunt) {
412
425
  var testSubtasks = [];
413
426
  // Skip core tests if running a different subset of the test suite
414
427
  if (runSubset('core')) {
415
- testSubtasks = testSubtasks.concat(['dist-css', 'csslint', 'jshint', 'jscs', 'qunit', 'build-customizer-html']);
428
+ testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'csslint:dist', 'test-js', 'docs']);
416
429
  }
417
430
  // Skip HTML validation if running a different subset of the test suite
418
431
  if (runSubset('validate-html') &&
@@ -430,30 +443,26 @@ module.exports = function (grunt) {
430
443
  testSubtasks.push('saucelabs-qunit');
431
444
  }
432
445
  grunt.registerTask('test', testSubtasks);
446
+ grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']);
433
447
 
434
448
  // JS distribution task.
435
- grunt.registerTask('dist-js', ['concat', 'uglify']);
449
+ grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']);
436
450
 
437
451
  // CSS distribution task.
438
452
  grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']);
439
- grunt.registerTask('dist-css', ['less-compile', 'autoprefixer', 'usebanner', 'csscomb', 'cssmin']);
440
-
441
- // Docs distribution task.
442
- grunt.registerTask('dist-docs', 'copy:docs');
453
+ grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'autoprefixer:theme', 'usebanner', 'csscomb:dist', 'cssmin:minifyCore', 'cssmin:minifyTheme']);
443
454
 
444
455
  // Full distribution task.
445
- grunt.registerTask('dist', ['clean', 'dist-css', 'copy:fonts', 'dist-js', 'dist-docs']);
456
+ grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']);
446
457
 
447
458
  // Default task.
448
- grunt.registerTask('default', ['test', 'dist', 'build-glyphicons-data', 'build-customizer']);
459
+ grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']);
449
460
 
450
461
  // Version numbering task.
451
462
  // grunt change-version-number --oldver=A.B.C --newver=X.Y.Z
452
463
  // This can be overzealous, so its changes should always be manually reviewed!
453
464
  grunt.registerTask('change-version-number', 'sed');
454
465
 
455
- grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); });
456
-
457
466
  // task for building customizer
458
467
  grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']);
459
468
  grunt.registerTask('build-customizer-html', 'jade');
@@ -462,6 +471,19 @@ module.exports = function (grunt) {
462
471
  generateRawFiles(grunt, banner);
463
472
  });
464
473
 
474
+ grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () {
475
+ var srcFiles = grunt.config.get('concat.bootstrap.src');
476
+ var destFilepath = 'dist/js/npm.js';
477
+ generateCommonJSModule(grunt, srcFiles, destFilepath);
478
+ });
479
+
480
+ // Docs task.
481
+ grunt.registerTask('docs-css', ['autoprefixer:docs', 'autoprefixer:examples', 'csscomb:docs', 'csscomb:examples', 'cssmin:docs']);
482
+ grunt.registerTask('lint-docs-css', ['csslint:docs', 'csslint:examples']);
483
+ grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']);
484
+ grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']);
485
+ grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-customizer']);
486
+
465
487
  // Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json).
466
488
  // This task should be run and the updated file should be committed whenever Bootstrap's dependencies change.
467
489
  grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', '_update-shrinkwrap']);
@@ -469,7 +491,7 @@ module.exports = function (grunt) {
469
491
  var done = this.async();
470
492
  npmShrinkwrap({ dev: true, dirname: __dirname }, function (err) {
471
493
  if (err) {
472
- grunt.fail.warn(err)
494
+ grunt.fail.warn(err);
473
495
  }
474
496
  var dest = 'test-infra/npm-shrinkwrap.json';
475
497
  fs.renameSync('npm-shrinkwrap.json', dest);
@@ -1,32 +1,33 @@
1
1
  # [Bootstrap](http://getbootstrap.com)
2
2
  [![Bower version](https://badge.fury.io/bo/bootstrap.svg)](http://badge.fury.io/bo/bootstrap)
3
3
  [![NPM version](https://badge.fury.io/js/bootstrap.svg)](http://badge.fury.io/js/bootstrap)
4
- [![Build Status](https://secure.travis-ci.org/twbs/bootstrap.svg?branch=master)](http://travis-ci.org/twbs/bootstrap)
4
+ [![Build Status](https://secure.travis-ci.org/twbs/bootstrap.svg?branch=master)](https://travis-ci.org/twbs/bootstrap)
5
5
  [![devDependency Status](https://david-dm.org/twbs/bootstrap/dev-status.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies)
6
6
  [![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap)
7
7
 
8
- Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat), and maintained by the [core team](https://github.com/twbs?tab=members) with the massive support and involvement of the community.
8
+ Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/twbs?tab=members) with the massive support and involvement of the community.
9
9
 
10
10
  To get started, check out <http://getbootstrap.com>!
11
11
 
12
12
  ## Table of contents
13
13
 
14
- - [Quick start](#quick-start)
15
- - [Bugs and feature requests](#bugs-and-feature-requests)
16
- - [Documentation](#documentation)
17
- - [Contributing](#contributing)
18
- - [Community](#community)
19
- - [Versioning](#versioning)
20
- - [Creators](#creators)
21
- - [Copyright and license](#copyright-and-license)
14
+ - [Quick start](#quick-start)
15
+ - [Bugs and feature requests](#bugs-and-feature-requests)
16
+ - [Documentation](#documentation)
17
+ - [Contributing](#contributing)
18
+ - [Community](#community)
19
+ - [Versioning](#versioning)
20
+ - [Creators](#creators)
21
+ - [Copyright and license](#copyright-and-license)
22
22
 
23
23
  ## Quick start
24
24
 
25
- Three quick start options are available:
25
+ Four quick start options are available:
26
26
 
27
- - [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.2.0.zip).
27
+ - [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.0.zip).
28
28
  - Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
29
29
  - Install with [Bower](http://bower.io): `bower install bootstrap`.
30
+ - Install with [npm](https://www.npmjs.org): `npm install bootstrap`.
30
31
 
31
32
  Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more.
32
33
 
@@ -66,10 +67,11 @@ Bootstrap's documentation, included in this repo in the root directory, is built
66
67
 
67
68
  ### Running documentation locally
68
69
 
69
- 1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v2.0.x).
70
- - **Windows users:** Read [this unofficial guide](https://github.com/juthilo/run-jekyll-on-windows/) to get Jekyll up and running without problems. We use Pygments for syntax highlighting, so make sure to read the sections on installing Python and Pygments.
71
- 2. From the root `/bootstrap` directory, run `jekyll serve` in the command line.
72
- 3. Open <http://localhost:9001> in your browser, and voilà.
70
+ 1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v2.3.x).
71
+ - **Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems.
72
+ 2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`.
73
+ 3. From the root `/bootstrap` directory, run `jekyll serve` in the command line.
74
+ 4. Open <http://localhost:9001> in your browser, and voilà.
73
75
 
74
76
  Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/).
75
77
 
@@ -85,7 +87,7 @@ Documentation for v2.3.2 has been made available for the time being at <http://g
85
87
 
86
88
  Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
87
89
 
88
- Moreover, if your pull request contains JavaScript patches or features, you must include relevant unit tests. All HTML and CSS should conform to the [Code Guide](http://github.com/mdo/code-guide), maintained by [Mark Otto](http://github.com/mdo).
90
+ Moreover, if your pull request contains JavaScript patches or features, you must include relevant unit tests. All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
89
91
 
90
92
  Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>.
91
93
 
@@ -95,9 +97,9 @@ Editor preferences are available in the [editor config](https://github.com/twbs/
95
97
 
96
98
  Keep track of development and community news.
97
99
 
98
- - Follow [@twbootstrap on Twitter](http://twitter.com/twbootstrap).
100
+ - Follow [@twbootstrap on Twitter](https://twitter.com/twbootstrap).
99
101
  - Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com).
100
- - Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##twitter-bootstrap` channel.
102
+ - Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
101
103
  - Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](http://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
102
104
 
103
105
 
@@ -112,13 +114,13 @@ For transparency into our release cycle and in striving to maintain backward com
112
114
 
113
115
  **Mark Otto**
114
116
 
115
- - <http://twitter.com/mdo>
116
- - <http://github.com/mdo>
117
+ - <https://twitter.com/mdo>
118
+ - <https://github.com/mdo>
117
119
 
118
120
  **Jacob Thornton**
119
121
 
120
- - <http://twitter.com/fat>
121
- - <http://github.com/fat>
122
+ - <https://twitter.com/fat>
123
+ - <https://github.com/fat>
122
124
 
123
125
 
124
126