From 65ac4e0688704e4d67d226c08d54d52f64cf1b16 Mon Sep 17 00:00:00 2001 From: msecret Date: Tue, 1 Sep 2015 21:46:05 -0700 Subject: [PATCH 1/3] Rule "Put a blank line between each selector block" I think it works for all cases. --- index.js | 2 +- src/plugins.js | 24 ++++++++++++++++++++++-- test/ugly.scss | 4 ++-- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index d9fb6b8..1b7d2e8 100644 --- a/index.js +++ b/index.js @@ -14,6 +14,6 @@ postcss(plugins) .process(sourceCss, processOpts) .then(function (result) { result.messages.forEach(function(i) { - console.log('i', i); + console.log('-- RULE', i); }); }); diff --git a/src/plugins.js b/src/plugins.js index 1f08654..4aac8e3 100644 --- a/src/plugins.js +++ b/src/plugins.js @@ -82,8 +82,28 @@ var ensureSpaceInProperty = postcss.plugin('space-in-property', function (opts) }; }); -module.exports = [ensureNoIndentSelectors, - ensureSpaceInRuleName]; +var ensureSpaceBeforeBracket = postcss.plugin('ensureSpaceBeforeBracket', + function(opts) { + opts = opts || {}; + + return function(css, result) { + var desired = ' '; + css.walkDecls(function(decl) { + var actual = decl.parent.raws.between; + + if (actual === desired) return; + var e = new LintError('Ensure a space between selector and bracket', + decl.source, decl); + result.warn(e.msg, e.opts); + }); + }; +}); + +module.exports = [ + //ensureNoIndentSelectors, + //ensureSpaceInRuleName, + ensureSpaceBeforeBracket +]; // ensureEachPropertyOwnLine, // ensureSpaceInProperty, // ensureNewLineBeforeRuleClosing, diff --git a/test/ugly.scss b/test/ugly.scss index 2feba40..65e4bd1 100644 --- a/test/ugly.scss +++ b/test/ugly.scss @@ -1,13 +1,13 @@ body { color: green; } -.div { +.div{ color:blue; } +/* .span { color: yellow; } -/* @mixin fakeMixin { color: coral; } From c97120c3be08b874ffadf67c50d755c46d0b31df Mon Sep 17 00:00:00 2001 From: msecret Date: Wed, 2 Sep 2015 12:06:37 -0700 Subject: [PATCH 2/3] Try at figuring out naming and id --- src/plugins.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/plugins.js b/src/plugins.js index 4aac8e3..4869fff 100644 --- a/src/plugins.js +++ b/src/plugins.js @@ -1,7 +1,8 @@ var postcss = require('postcss'); -function LintError (msg, source, obj) { +function LintError(msg, id, source, obj) { this.msg = msg; + this.id = id; this.opts = { line: source.start.line, column: source.start.column @@ -82,7 +83,7 @@ var ensureSpaceInProperty = postcss.plugin('space-in-property', function (opts) }; }); -var ensureSpaceBeforeBracket = postcss.plugin('ensureSpaceBeforeBracket', +var SPC_SpaceBeforeBracket = postcss.plugin('SPC_SpaceBeforeBracket', function(opts) { opts = opts || {}; @@ -92,8 +93,8 @@ var ensureSpaceBeforeBracket = postcss.plugin('ensureSpaceBeforeBracket', var actual = decl.parent.raws.between; if (actual === desired) return; - var e = new LintError('Ensure a space between selector and bracket', - decl.source, decl); + var e = new LintError('Put spaces before { in rule declarations.', + 'SPC', decl.source, decl); result.warn(e.msg, e.opts); }); }; @@ -102,7 +103,7 @@ var ensureSpaceBeforeBracket = postcss.plugin('ensureSpaceBeforeBracket', module.exports = [ //ensureNoIndentSelectors, //ensureSpaceInRuleName, - ensureSpaceBeforeBracket + SPC_SpaceBeforeBracket ]; // ensureEachPropertyOwnLine, // ensureSpaceInProperty, From 3a85e6fb117617b23d18407f233c916d09024c6d Mon Sep 17 00:00:00 2001 From: msecret Date: Wed, 2 Sep 2015 12:23:22 -0700 Subject: [PATCH 3/3] Attempt at naming scheme This is a naming cheme for plugins, plugin functions and adds the identifier for the error. The purpose to is make it easier to go back to the styleguide document and to keep consistency with the code. The errors should attempt to match the styleguide too. --- src/plugins.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins.js b/src/plugins.js index 4869fff..7e301fc 100644 --- a/src/plugins.js +++ b/src/plugins.js @@ -83,7 +83,7 @@ var ensureSpaceInProperty = postcss.plugin('space-in-property', function (opts) }; }); -var SPC_SpaceBeforeBracket = postcss.plugin('SPC_SpaceBeforeBracket', +var SPC04_SpaceBeforeBracket = postcss.plugin('SPC04_SpaceBeforeBracket', function(opts) { opts = opts || {}; @@ -94,7 +94,7 @@ var SPC_SpaceBeforeBracket = postcss.plugin('SPC_SpaceBeforeBracket', if (actual === desired) return; var e = new LintError('Put spaces before { in rule declarations.', - 'SPC', decl.source, decl); + 'SPC04', decl.source, decl); result.warn(e.msg, e.opts); }); }; @@ -103,7 +103,7 @@ var SPC_SpaceBeforeBracket = postcss.plugin('SPC_SpaceBeforeBracket', module.exports = [ //ensureNoIndentSelectors, //ensureSpaceInRuleName, - SPC_SpaceBeforeBracket + SPC04_SpaceBeforeBracket ]; // ensureEachPropertyOwnLine, // ensureSpaceInProperty,