From: alexlamsl Date: Thu, 31 Mar 2016 11:26:20 +0000 (+0800) Subject: enforce eslint array-bracket-spacing X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=d26e5220469c7bb611abf51fb1be18417e646525;p=html-minifier.git enforce eslint array-bracket-spacing --- diff --git a/.eslintrc.json b/.eslintrc.json index c809c97..7549ed7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,6 +4,10 @@ }, "extends": "eslint:recommended", "rules": { + "array-bracket-spacing": [ + "error", + "always" + ], "block-scoped-var": "error", "block-spacing": "error", "brace-style": [ diff --git a/Gruntfile.js b/Gruntfile.js index 6d646b3..67bdf68 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -33,16 +33,16 @@ module.exports = function(grunt) { src: 'Gruntfile.js' }, src: { - src: ['cli.js', 'src/**/*.js'] + src: [ 'cli.js', 'src/**/*.js' ] }, tests: { - src: ['tests/*.js', 'test.js'] + src: [ 'tests/*.js', 'test.js' ] }, web: { src: 'assets/master.js' }, other: { - src: ['backtest.js', 'benchmark.js'] + src: [ 'backtest.js', 'benchmark.js' ] } }, diff --git a/backtest.js b/backtest.js index 3603ae9..8c4304b 100644 --- a/backtest.js +++ b/backtest.js @@ -178,7 +178,7 @@ if (process.argv.length > 2) { } else { process.on('message', function(hash) { - var paths = ['src', 'benchmark.conf', 'sample-cli-config-file.conf']; + var paths = [ 'src', 'benchmark.conf', 'sample-cli-config-file.conf' ]; git('reset', 'HEAD', '--', paths, function() { var conf = 'sample-cli-config-file.conf'; diff --git a/benchmark.js b/benchmark.js index 57a5240..550da02 100644 --- a/benchmark.js +++ b/benchmark.js @@ -27,8 +27,8 @@ var progress = new Progress('[:bar] :etas :fileName', { }); var table = new Table({ - head: ['File', 'Before', 'After', 'Minimize', 'Will Peavy', 'htmlcompressor.com', 'Savings', 'Time'], - colWidths: [20, 25, 25, 25, 25, 25, 20, 10] + head: [ 'File', 'Before', 'After', 'Minimize', 'Will Peavy', 'htmlcompressor.com', 'Savings', 'Time' ], + colWidths: [ 20, 25, 25, 25, 25, 25, 20, 10 ] }); function toKb(size) { @@ -131,7 +131,7 @@ run(fileNames.map(function (fileName) { brFilePath: path.join('benchmarks/generated/', fileName + '.html.br') }; var infos = {}; - ['minifier', 'minimize', 'willpeavy', 'compressor'].forEach(function (name) { + [ 'minifier', 'minimize', 'willpeavy', 'compressor' ].forEach(function (name) { infos[name] = { filePath: path.join('benchmarks/generated/', fileName + '.' + name + '.html'), gzFilePath: path.join('benchmarks/generated/', fileName + '.' + name + '.html.gz'), @@ -199,7 +199,7 @@ run(fileNames.map(function (fileName) { function testHTMLMinifier(done) { var info = infos.minifier; info.startTime = Date.now(); - var args = [filePath, '-c', 'sample-cli-config-file.conf', '--minify-urls', urls[fileName], '-o', info.filePath]; + var args = [ filePath, '-c', 'sample-cli-config-file.conf', '--minify-urls', urls[fileName], '-o', info.filePath ]; fork('./cli', args).on('exit', function () { readSizes(info, done); }); @@ -303,12 +303,12 @@ run(fileNames.map(function (fileName) { testHTMLCompressor ], function () { var row = [ - [fileName, '+ gzip', '+ lzma', '+ brotli'].join('\n'), - [redSize(original.size), redSize(original.gzSize), redSize(original.lzSize), redSize(original.brSize)].join('\n') + [ fileName, '+ gzip', '+ lzma', '+ brotli' ].join('\n'), + [ redSize(original.size), redSize(original.gzSize), redSize(original.lzSize), redSize(original.brSize) ].join('\n') ]; for (var name in infos) { var info = infos[name]; - row.push([greenSize(info.size), greenSize(info.gzSize), greenSize(info.lzSize), greenSize(info.brSize)].join('\n')); + row.push([ greenSize(info.size), greenSize(info.gzSize), greenSize(info.lzSize), greenSize(info.brSize) ].join('\n')); } row.push( [ diff --git a/cli.js b/cli.js index 1cd4167..fbd6780 100755 --- a/cli.js +++ b/cli.js @@ -54,48 +54,48 @@ usage += ' on the command line you must escape those such as --ignore-custom- cli.setUsage(usage); var mainOptions = { - caseSensitive: [[false, 'Treat attributes in case sensitive manner (useful for SVG; e.g. viewBox)']], - collapseBooleanAttributes: [[false, 'Omit attribute values from boolean attributes']], - collapseInlineTagWhitespace: [[false, 'Collapse white space around inline tag']], - collapseWhitespace: [[false, 'Collapse white space that contributes to text nodes in a document tree.']], - conservativeCollapse: [[false, 'Always collapse to 1 space (never remove it entirely)']], - customAttrAssign: [[false, 'Arrays of regex\'es that allow to support custom attribute assign expressions (e.g. \'
\')', 'string'], 'json-regex'], - customAttrCollapse: [[false, 'Regex that specifies custom attribute to strip newlines from (e.g. /ng\-class/)', 'string'], 'string-regex'], - customAttrSurround: [[false, 'Arrays of regex\'es that allow to support custom attribute surround expressions (e.g. )', 'string'], 'json-regex'], - customEventAttributes: [[false, 'Arrays of regex\'es that allow to support custom event attributes for minifyJS (e.g. ng-click)', 'string'], 'json-regex'], - html5: [[false, 'Parse input according to HTML5 specifications']], - ignoreCustomComments: [[false, 'Array of regex\'es that allow to ignore certain comments, when matched', 'string'], 'json-regex'], - ignoreCustomFragments: [[false, 'Array of regex\'es that allow to ignore certain fragments, when matched (e.g. , {{ ... }})', 'string'], 'json-regex'], - includeAutoGeneratedTags: [[false, 'Insert tags generated by HTML parser'], true], - keepClosingSlash: [[false, 'Keep the trailing slash on singleton elements']], - lint: [[false, 'Toggle linting']], - maxLineLength: [[false, 'Max line length', 'number'], true], - minifyCSS: [[false, 'Minify CSS in style elements and style attributes (uses clean-css)']], - minifyJS: [[false, 'Minify Javascript in script elements and on* attributes (uses UglifyJS)']], - minifyURLs: [[false, 'Minify URLs in various attributes (uses relateurl)', 'string'], 'site-url'], - preserveLineBreaks: [[false, 'Always collapse to 1 line break (never remove it entirely) when whitespace between tags include a line break.']], - preventAttributesEscaping: [[false, 'Prevents the escaping of the values of attributes.']], - processConditionalComments: [[false, 'Process contents of conditional comments through minifier']], - processScripts: [[false, 'Array of strings corresponding to types of script elements to process through minifier (e.g. "text/ng-template", "text/x-handlebars-template", etc.)', 'string'], 'json'], - quoteCharacter: [[false, 'Type of quote to use for attribute values (\' or ")', 'string'], true], - removeAttributeQuotes: [[false, 'Remove quotes around attributes when possible.']], - removeComments: [[false, 'Strip HTML comments']], - removeEmptyAttributes: [[false, 'Remove all attributes with whitespace-only values']], - removeEmptyElements: [[false, 'Remove all elements with empty contents']], - removeOptionalTags: [[false, 'Remove unrequired tags']], - removeRedundantAttributes: [[false, 'Remove attributes when value matches default.']], - removeScriptTypeAttributes: [[false, 'Remove type="text/javascript" from script tags. Other type attribute values are left intact.']], - removeStyleLinkTypeAttributes: [[false, 'Remove type="text/css" from style and link tags. Other type attribute values are left intact.']], - removeTagWhitespace: [[false, 'Remove space between attributes whenever possible.']], - useShortDoctype: [[false, 'Replaces the doctype with the short (HTML5) doctype']] + caseSensitive: [ [ false, 'Treat attributes in case sensitive manner (useful for SVG; e.g. viewBox)' ] ], + collapseBooleanAttributes: [ [ false, 'Omit attribute values from boolean attributes' ] ], + collapseInlineTagWhitespace: [ [ false, 'Collapse white space around inline tag' ] ], + collapseWhitespace: [ [ false, 'Collapse white space that contributes to text nodes in a document tree.' ] ], + conservativeCollapse: [ [ false, 'Always collapse to 1 space (never remove it entirely)' ] ], + customAttrAssign: [ [ false, 'Arrays of regex\'es that allow to support custom attribute assign expressions (e.g. \'
\')', 'string' ], 'json-regex' ], + customAttrCollapse: [ [ false, 'Regex that specifies custom attribute to strip newlines from (e.g. /ng\-class/)', 'string' ], 'string-regex' ], + customAttrSurround: [ [ false, 'Arrays of regex\'es that allow to support custom attribute surround expressions (e.g. )', 'string' ], 'json-regex' ], + customEventAttributes: [ [ false, 'Arrays of regex\'es that allow to support custom event attributes for minifyJS (e.g. ng-click)', 'string' ], 'json-regex' ], + html5: [ [ false, 'Parse input according to HTML5 specifications' ] ], + ignoreCustomComments: [ [ false, 'Array of regex\'es that allow to ignore certain comments, when matched', 'string' ], 'json-regex' ], + ignoreCustomFragments: [ [ false, 'Array of regex\'es that allow to ignore certain fragments, when matched (e.g. , {{ ... }})', 'string' ], 'json-regex' ], + includeAutoGeneratedTags: [ [ false, 'Insert tags generated by HTML parser' ], true ], + keepClosingSlash: [ [ false, 'Keep the trailing slash on singleton elements' ] ], + lint: [ [ false, 'Toggle linting' ] ], + maxLineLength: [ [ false, 'Max line length', 'number' ], true ], + minifyCSS: [ [ false, 'Minify CSS in style elements and style attributes (uses clean-css)' ] ], + minifyJS: [ [ false, 'Minify Javascript in script elements and on* attributes (uses UglifyJS)' ] ], + minifyURLs: [ [ false, 'Minify URLs in various attributes (uses relateurl)', 'string' ], 'site-url' ], + preserveLineBreaks: [ [ false, 'Always collapse to 1 line break (never remove it entirely) when whitespace between tags include a line break.' ] ], + preventAttributesEscaping: [ [ false, 'Prevents the escaping of the values of attributes.' ] ], + processConditionalComments: [ [ false, 'Process contents of conditional comments through minifier' ] ], + processScripts: [ [ false, 'Array of strings corresponding to types of script elements to process through minifier (e.g. "text/ng-template", "text/x-handlebars-template", etc.)', 'string' ], 'json' ], + quoteCharacter: [ [ false, 'Type of quote to use for attribute values (\' or ")', 'string' ], true ], + removeAttributeQuotes: [ [ false, 'Remove quotes around attributes when possible.' ] ], + removeComments: [ [ false, 'Strip HTML comments' ] ], + removeEmptyAttributes: [ [ false, 'Remove all attributes with whitespace-only values' ] ], + removeEmptyElements: [ [ false, 'Remove all elements with empty contents' ] ], + removeOptionalTags: [ [ false, 'Remove unrequired tags' ] ], + removeRedundantAttributes: [ [ false, 'Remove attributes when value matches default.' ] ], + removeScriptTypeAttributes: [ [ false, 'Remove type="text/javascript" from script tags. Other type attribute values are left intact.' ] ], + removeStyleLinkTypeAttributes: [ [ false, 'Remove type="text/css" from style and link tags. Other type attribute values are left intact.' ] ], + removeTagWhitespace: [ [ false, 'Remove space between attributes whenever possible.' ] ], + useShortDoctype: [ [ false, 'Replaces the doctype with the short (HTML5) doctype' ] ] }; var cliOptions = { - version: ['v', 'Version information'], - output: ['o', 'Specify output file (if not specified STDOUT will be used for output)', 'file'], - 'config-file': ['c', 'Use config file', 'file'], - 'input-dir': [false, 'Specify an input directory', 'dir'], - 'output-dir': [false, 'Specify an output directory', 'dir'] + version: [ 'v', 'Version information' ], + output: [ 'o', 'Specify output file (if not specified STDOUT will be used for output)', 'file' ], + 'config-file': [ 'c', 'Use config file', 'file' ], + 'input-dir': [ false, 'Specify an input directory', 'dir' ], + 'output-dir': [ false, 'Specify an output directory', 'dir' ] }; var mainOptionKeys = Object.keys(mainOptions); @@ -146,7 +146,7 @@ cli.main(function(args, options) { catch (e) { cli.fatal('Could not parse JSON value \'' + value + '\''); } - return Array.isArray(jsonArray) ? jsonArray : [value]; + return Array.isArray(jsonArray) ? jsonArray : [ value ]; } } diff --git a/dist/htmlminifier.js b/dist/htmlminifier.js index 0029afa..ce7e769 100644 --- a/dist/htmlminifier.js +++ b/dist/htmlminifier.js @@ -32344,7 +32344,7 @@ function processOptions(options) { options.includeAutoGeneratedTags = true; } - var defaultTesters = ['canCollapseWhitespace', 'canTrimWhitespace']; + var defaultTesters = [ 'canCollapseWhitespace', 'canTrimWhitespace' ]; for (var i = 0, len = defaultTesters.length; i < len; i++) { if (!options[defaultTesters[i]]) { options[defaultTesters[i]] = function() { diff --git a/src/htmlminifier.js b/src/htmlminifier.js index 43dbaed..b4d07e8 100644 --- a/src/htmlminifier.js +++ b/src/htmlminifier.js @@ -583,7 +583,7 @@ function processOptions(options) { options.includeAutoGeneratedTags = true; } - var defaultTesters = ['canCollapseWhitespace', 'canTrimWhitespace']; + var defaultTesters = [ 'canCollapseWhitespace', 'canTrimWhitespace' ]; for (var i = 0, len = defaultTesters.length; i < len; i++) { if (!options[defaultTesters[i]]) { options[defaultTesters[i]] = function() { diff --git a/test.js b/test.js index e7d5e52..7d8c0da 100644 --- a/test.js +++ b/test.js @@ -7,7 +7,7 @@ testrunner.options.log.tests = false; testrunner.options.log.assertions = false; testrunner.run({ - deps: ['./src/htmlparser.js', './src/htmllint.js'], + deps: [ './src/htmlparser.js', './src/htmllint.js' ], code: './src/htmlminifier.js', tests: [ './tests/lint.js', diff --git a/tests/inject.js b/tests/inject.js index 54fd80b..902a4e3 100644 --- a/tests/inject.js +++ b/tests/inject.js @@ -1,5 +1,5 @@ 'use strict'; QUnit.done(function(details) { - alert(JSON.stringify(['qunit.done', details])); + alert(JSON.stringify([ 'qunit.done', details ])); }); diff --git a/tests/minifier.js b/tests/minifier.js index 556c4d4..79b9550 100644 --- a/tests/minifier.js +++ b/tests/minifier.js @@ -2245,33 +2245,33 @@ test('auto-generated tags', function() { test('tests from PHPTAL', function() { [ // trailing

removed by minifier, but not by PHPTAL - ['

foo bar baz', '

foo \t bar\n\n\n baz

'], - ['

foo bar

  \tfoo\t   \nbar   
', '

foo \t\n bar

  \tfoo\t   \nbar   
'], - ['

foo bar baz', '

foo bar baz

'], - ['

foo bar baz', '

foo bar baz

'], - ['

foo bar baz', '

foo bar baz

'], - ['

foo bar baz', '

foo bar baz

'], - ['

foo
', '

foo

'], + [ '

foo bar baz', '

foo \t bar\n\n\n baz

' ], + [ '

foo bar

  \tfoo\t   \nbar   
', '

foo \t\n bar

  \tfoo\t   \nbar   
' ], + [ '

foo bar baz', '

foo bar baz

' ], + [ '

foo bar baz', '

foo bar baz

' ], + [ '

foo bar baz', '

foo bar baz

' ], + [ '

foo bar baz', '

foo bar baz

' ], + [ '

foo
', '

foo

' ], // PHPTAL remove whitespace after 'foo' - problematic if is used as icon font - ['

foo ', '

foo

'], - ['

foo ', '

foo

'], + [ '

foo ', '

foo

' ], + [ '

foo ', '

foo

' ], // comments removed by minifier, but not by PHPTAL - ['

foo', '

foo

'], - ['
a
b
c
d
e
', '
a
b
c
d
e
'], + [ '

foo', '

foo

' ], + [ '
a
b
c
d
e
', '
a
b
c
d
e
' ], // unary slashes removed by minifier, but not by PHPTAL - ['
', '
'], - ['
x
', '
x
'], - ['
x y
', '
x y
'], - ['
y
', '
y
'], - ['
', '
'], - ['
x
', '
x
'], - ['
x y
', '
x y
'], - ['
y
', '
y
'], - ['
', '
'], - ['
x
', '
x
'], - ['
x y
', '
x y
'], - ['
y
', '
y
'], - ['', ''], + [ '
', '
' ], + [ '
x
', '
x
' ], + [ '
x y
', '
x y
' ], + [ '
y
', '
y
' ], + [ '
', '
' ], + [ '
x
', '
x
' ], + [ '
x y
', '
x y
' ], + [ '
y
', '
y
' ], + [ '
', '
' ], + [ '
x
', '
x
' ], + [ '
x y
', '
x y
' ], + [ '
y
', '
y
' ], + [ '', '' ], // optional tags removed by minifier, but not by PHPTAL // parser cannot handle ' ], */ - ['', ''] + [ '', '' ] /* trim "title" attribute value in [ 'Foo

x xu


foo',