aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Rebert <[email protected]>2014-12-31 16:11:04 -0800
committerChris Rebert <[email protected]>2014-12-31 16:11:04 -0800
commit45f58417853f48de2448daf379227f6480b28dd5 (patch)
treeddf38e053b5cd2e4a5e5af0d13da3c75c0a782ec
parent6c383c5102011102d0d5157f6e37d7520f103ae7 (diff)
parent35073fc1287654caa657fb17a2ac97103717df7a (diff)
downloadbootstrap-45f58417853f48de2448daf379227f6480b28dd5.tar.xz
bootstrap-45f58417853f48de2448daf379227f6480b28dd5.zip
Merge pull request #15464 from twbs/address-15419
Address #15419
-rw-r--r--Gruntfile.js5
-rw-r--r--dist/css/bootstrap.css6
-rw-r--r--docs/_data/glyphicons.yml3
-rw-r--r--grunt/bs-glyphicons-data-generator.js41
-rw-r--r--less/glyphicons.less10
5 files changed, 54 insertions, 11 deletions
diff --git a/Gruntfile.js b/Gruntfile.js
index ca6bed5f1..30a945a4a 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -18,6 +18,7 @@ module.exports = function (grunt) {
var fs = require('fs');
var path = require('path');
var npmShrinkwrap = require('npm-shrinkwrap');
+ var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js');
var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
var getLessVarsData = function () {
var filePath = path.join(__dirname, 'less/variables.less');
@@ -464,6 +465,8 @@ module.exports = function (grunt) {
// This can be overzealous, so its changes should always be manually reviewed!
grunt.registerTask('change-version-number', 'sed');
+ grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); });
+
// task for building customizer
grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']);
grunt.registerTask('build-customizer-html', 'jade');
@@ -483,7 +486,7 @@ module.exports = function (grunt) {
grunt.registerTask('lint-docs-css', ['csslint:docs', 'csslint:examples']);
grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']);
grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']);
- grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-customizer']);
+ grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']);
grunt.registerTask('prep-release', ['jekyll:github', 'compress']);
diff --git a/dist/css/bootstrap.css b/dist/css/bootstrap.css
index 270dda446..8dd893ea7 100644
--- a/dist/css/bootstrap.css
+++ b/dist/css/bootstrap.css
@@ -901,12 +901,6 @@ th {
.glyphicon-paste:before {
content: "\e206";
}
-.glyphicon-door:before {
- content: "\1f6aa";
-}
-.glyphicon-key:before {
- content: "\1f511";
-}
.glyphicon-alert:before {
content: "\e209";
}
diff --git a/docs/_data/glyphicons.yml b/docs/_data/glyphicons.yml
index 537e4e150..ade750912 100644
--- a/docs/_data/glyphicons.yml
+++ b/docs/_data/glyphicons.yml
@@ -4,6 +4,7 @@
- glyphicon-asterisk
- glyphicon-plus
- glyphicon-euro
+- glyphicon-eur
- glyphicon-minus
- glyphicon-cloud
- glyphicon-envelope
@@ -207,8 +208,6 @@
- glyphicon-level-up
- glyphicon-copy
- glyphicon-paste
-- glyphicon-door
-- glyphicon-key
- glyphicon-alert
- glyphicon-equalizer
- glyphicon-king
diff --git a/grunt/bs-glyphicons-data-generator.js b/grunt/bs-glyphicons-data-generator.js
new file mode 100644
index 000000000..339fd0ffe
--- /dev/null
+++ b/grunt/bs-glyphicons-data-generator.js
@@ -0,0 +1,41 @@
+/*!
+ * Bootstrap Grunt task for Glyphicons data generation
+ * http://getbootstrap.com
+ * Copyright 2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+'use strict';
+var fs = require('fs');
+
+module.exports = function generateGlyphiconsData(grunt) {
+ // Pass encoding, utf8, so `readFileSync` will return a string instead of a
+ // buffer
+ var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8');
+ var glyphiconsLines = glyphiconsFile.split('\n');
+
+ // Use any line that starts with ".glyphicon-" and capture the class name
+ var iconClassName = /^\.(glyphicon-[a-zA-Z0-9-]+)/;
+ var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.**\n' +
+ '# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n';
+ var glyphiconsYml = 'docs/_data/glyphicons.yml';
+ for (var i = 0, len = glyphiconsLines.length; i < len; i++) {
+ var match = glyphiconsLines[i].match(iconClassName);
+
+ if (match !== null) {
+ glyphiconsData += '- ' + match[1] + '\n';
+ }
+ }
+
+ // Create the `_data` directory if it doesn't already exist
+ if (!fs.existsSync('docs/_data')) {
+ fs.mkdirSync('docs/_data');
+ }
+
+ try {
+ fs.writeFileSync(glyphiconsYml, glyphiconsData);
+ }
+ catch (err) {
+ grunt.fail.warn(err);
+ }
+ grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.');
+};
diff --git a/less/glyphicons.less b/less/glyphicons.less
index cb02f9945..8b25f89a5 100644
--- a/less/glyphicons.less
+++ b/less/glyphicons.less
@@ -239,8 +239,14 @@
.glyphicon-level-up { &:before { content: "\e204"; } }
.glyphicon-copy { &:before { content: "\e205"; } }
.glyphicon-paste { &:before { content: "\e206"; } }
-.glyphicon-door { &:before { content: "\1f6aa"; } }
-.glyphicon-key { &:before { content: "\1f511"; } }
+// The following 2 Glyphicons are omitted for the time being because
+// they currently use Unicode codepoints that are outside the
+// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle
+// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.
+// Notably, the bug affects some older versions of the Android Browser.
+// More info: https://github.com/twbs/bootstrap/issues/10106
+// .glyphicon-door { &:before { content: "\1f6aa"; } }
+// .glyphicon-key { &:before { content: "\1f511"; } }
.glyphicon-alert { &:before { content: "\e209"; } }
.glyphicon-equalizer { &:before { content: "\e210"; } }
.glyphicon-king { &:before { content: "\e211"; } }