diff options
| author | Chris Rebert <[email protected]> | 2014-02-04 13:18:54 -0800 |
|---|---|---|
| committer | Chris Rebert <[email protected]> | 2014-02-04 13:18:54 -0800 |
| commit | 46f9d27142ed81cfbcc0dc7806829756357a7505 (patch) | |
| tree | c1bb13714d26ae0c3206c21cf25b47cf311b0480 /docs | |
| parent | ef3c560a06cce3b48a40f111d8bd8dd4bc2b2f9d (diff) | |
| download | bootstrap-46f9d27142ed81cfbcc0dc7806829756357a7505.tar.xz bootstrap-46f9d27142ed81cfbcc0dc7806829756357a7505.zip | |
reorganize all grunt tasks into one directory
also fixes #12581
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/grunt/bs-glyphicons-data-generator.js | 33 | ||||
| -rw-r--r-- | docs/grunt/bs-lessdoc-parser.js | 236 | ||||
| -rw-r--r-- | docs/grunt/bs-raw-files-generator.js | 31 |
3 files changed, 0 insertions, 300 deletions
diff --git a/docs/grunt/bs-glyphicons-data-generator.js b/docs/grunt/bs-glyphicons-data-generator.js deleted file mode 100644 index 3e32698a1..000000000 --- a/docs/grunt/bs-glyphicons-data-generator.js +++ /dev/null @@ -1,33 +0,0 @@ -/* jshint node: true */ -/*! - * 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) - */ - -var fs = require('fs') - -module.exports = function generateGlyphiconsData() { - // Pass encoding, utf8, so `readFileSync` will return a string instead of a - // buffer - var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8') - var glpyhiconsLines = glyphiconsFile.split('\n') - - // Use any line that starts with ".glyphicon-" and capture the class name - var iconClassName = /^\.(glyphicon-[^\s]+)/ - 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'; - for (var i = 0, len = glpyhiconsLines.length; i < len; i++) { - var match = glpyhiconsLines[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') - - fs.writeFileSync('docs/_data/glyphicons.yml', glyphiconsData) -} diff --git a/docs/grunt/bs-lessdoc-parser.js b/docs/grunt/bs-lessdoc-parser.js deleted file mode 100644 index 9d0b2ffaf..000000000 --- a/docs/grunt/bs-lessdoc-parser.js +++ /dev/null @@ -1,236 +0,0 @@ -/* jshint node: true */ -/*! - * Bootstrap Grunt task for parsing Less docstrings - * http://getbootstrap.com - * Copyright 2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -var markdown = require('markdown').markdown; - -function markdown2html(markdownString) { - // the slice removes the <p>...</p> wrapper output by Markdown processor - return markdown.toHTML(markdownString.trim()).slice(3, -4); -} - - -/* -Mini-language: - //== This is a normal heading, which starts a section. Sections group variables together. - //## 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. - @foo: #ffff; - - //-- This is a heading for a section whose variables shouldn't be customizable - - All other lines are ignored completely. -*/ - - -var CUSTOMIZABLE_HEADING = /^[/]{2}={2}(.*)$/; -var UNCUSTOMIZABLE_HEADING = /^[/]{2}-{2}(.*)$/; -var SUBSECTION_HEADING = /^[/]{2}={3}(.*)$/; -var SECTION_DOCSTRING = /^[/]{2}#{2}(.*)$/; -var VAR_ASSIGNMENT = /^(@[a-zA-Z0-9_-]+):[ ]*([^ ;][^;]+);[ ]*$/; -var VAR_DOCSTRING = /^[/]{2}[*]{2}(.*)$/; - -function Section(heading, customizable) { - this.heading = heading.trim(); - this.id = this.heading.replace(/\s+/g, '-').toLowerCase(); - this.customizable = customizable; - this.docstring = null; - this.subsections = []; -} - -Section.prototype.addSubSection = function (subsection) { - this.subsections.push(subsection); -}; - -function SubSection(heading) { - this.heading = heading.trim(); - this.id = this.heading.replace(/\s+/g, '-').toLowerCase(); - this.variables = []; -} - -SubSection.prototype.addVar = function (variable) { - this.variables.push(variable); -}; - -function VarDocstring(markdownString) { - this.html = markdown2html(markdownString); -} - -function SectionDocstring(markdownString) { - this.html = markdown2html(markdownString); -} - -function Variable(name, defaultValue) { - this.name = name; - this.defaultValue = defaultValue; - this.docstring = null; -} - -function Tokenizer(fileContent) { - this._lines = fileContent.split('\n'); - this._next = undefined; -} - -Tokenizer.prototype.unshift = function (token) { - if (this._next !== undefined) { - throw new Error('Attempted to unshift twice!'); - } - this._next = token; -}; - -Tokenizer.prototype._shift = function () { - // returning null signals EOF - // returning undefined means the line was ignored - if (this._next !== undefined) { - var result = this._next; - this._next = undefined; - return result; - } - if (this._lines.length <= 0) { - return null; - } - var line = this._lines.shift(); - var match = null; - match = SUBSECTION_HEADING.exec(line); - if (match !== null) { - return new SubSection(match[1]); - } - match = CUSTOMIZABLE_HEADING.exec(line); - if (match !== null) { - return new Section(match[1], true); - } - match = UNCUSTOMIZABLE_HEADING.exec(line); - if (match !== null) { - return new Section(match[1], false); - } - match = SECTION_DOCSTRING.exec(line); - if (match !== null) { - return new SectionDocstring(match[1]); - } - match = VAR_DOCSTRING.exec(line); - if (match !== null) { - return new VarDocstring(match[1]); - } - var commentStart = line.lastIndexOf('//'); - var varLine = (commentStart === -1) ? line : line.slice(0, commentStart); - match = VAR_ASSIGNMENT.exec(varLine); - if (match !== null) { - return new Variable(match[1], match[2]); - } - return undefined; -}; - -Tokenizer.prototype.shift = function () { - while (true) { - var result = this._shift(); - if (result === undefined) { - continue; - } - return result; - } -}; - -function Parser(fileContent) { - this._tokenizer = new Tokenizer(fileContent); -} - -Parser.prototype.parseFile = function () { - var sections = []; - while (true) { - var section = this.parseSection(); - if (section === null) { - if (this._tokenizer.shift() !== null) { - throw new Error('Unexpected unparsed section of file remains!'); - } - return sections; - } - sections.push(section); - } -}; - -Parser.prototype.parseSection = function () { - var section = this._tokenizer.shift(); - if (section === null) { - return null; - } - if (!(section instanceof Section)) { - throw new Error('Expected section heading; got: ' + JSON.stringify(section)); - } - var docstring = this._tokenizer.shift(); - if (docstring instanceof SectionDocstring) { - section.docstring = docstring; - } - else { - this._tokenizer.unshift(docstring); - } - this.parseSubSections(section); - - return section; -}; - -Parser.prototype.parseSubSections = function (section) { - while (true) { - var subsection = this.parseSubSection(); - if (subsection === null) { - if (section.subsections.length === 0) { - // Presume an implicit initial subsection - subsection = new SubSection(''); - this.parseVars(subsection); - } - else { - break; - } - } - section.addSubSection(subsection); - } - - if (section.subsections.length === 1 && !(section.subsections[0].heading) && section.subsections[0].variables.length === 0) { - // Ignore lone empty implicit subsection - section.subsections = []; - } -}; - -Parser.prototype.parseSubSection = function () { - var subsection = this._tokenizer.shift(); - if (subsection instanceof SubSection) { - this.parseVars(subsection); - return subsection; - } - this._tokenizer.unshift(subsection); - return null; -}; - -Parser.prototype.parseVars = function (subsection) { - while (true) { - var variable = this.parseVar(); - if (variable === null) { - return; - } - subsection.addVar(variable); - } -}; - -Parser.prototype.parseVar = function () { - var docstring = this._tokenizer.shift(); - if (!(docstring instanceof VarDocstring)) { - this._tokenizer.unshift(docstring); - docstring = null; - } - var variable = this._tokenizer.shift(); - if (variable instanceof Variable) { - variable.docstring = docstring; - return variable; - } - this._tokenizer.unshift(variable); - return null; -}; - - -module.exports = Parser; diff --git a/docs/grunt/bs-raw-files-generator.js b/docs/grunt/bs-raw-files-generator.js deleted file mode 100644 index 255508b7f..000000000 --- a/docs/grunt/bs-raw-files-generator.js +++ /dev/null @@ -1,31 +0,0 @@ -/* jshint node: true */ -/*! - * Bootstrap Grunt task for generating raw-files.min.js for the Customizer - * http://getbootstrap.com - * Copyright 2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -var btoa = require('btoa') // jshint ignore:line -var fs = require('fs') - -function getFiles(type) { - var files = {} - fs.readdirSync(type) - .filter(function (path) { - return type == 'fonts' ? true : new RegExp('\\.' + type + '$').test(path) - }) - .forEach(function (path) { - var fullPath = type + '/' + path - return files[path] = (type == 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8')) - }) - return 'var __' + type + ' = ' + JSON.stringify(files) + '\n' -} - -module.exports = function generateRawFilesJs(banner) { - if (!banner) { - banner = '' - } - var files = banner + getFiles('js') + getFiles('less') + getFiles('fonts') - fs.writeFileSync('docs/assets/js/raw-files.min.js', files) -} |
