diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..07e6e47 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/example.css b/example.css new file mode 100644 index 0000000..d3db72a --- /dev/null +++ b/example.css @@ -0,0 +1,6 @@ +@charset 'utf-8'; +.foo-bar { +} +.foo-bar > .el { + color: blue; +} diff --git a/index.js b/index.js new file mode 100644 index 0000000..352100f --- /dev/null +++ b/index.js @@ -0,0 +1,26 @@ +var postcss = require('postcss') + +module.exports = postcss.plugin('postcss-rscss-linter', function (options, secOptions) { + return function (root, result) { + return walk(root, result) + } +}) + +function walk (node, state) { + if (node.type === 'rule') { + state = walkRule(node, state) + } + + if (node.nodes) { + state = node.nodes.reduce(function (state, subnode) { + return walk(subnode, state) + }, state) + } + + return state +} + +function walkRule (node, state) { + state.messages.push({ 'rule': node.selector }) + return state +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..146b689 --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "rscss-lint", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "Rico Sta. Cruz (http://ricostacruz.com)", + "license": "MIT", + "dependencies": { + "postcss": "5.1.2" + }, + "devDependencies": { + "tape": "4.6.0" + } +} diff --git a/test.js b/test.js new file mode 100644 index 0000000..9f346ea --- /dev/null +++ b/test.js @@ -0,0 +1,8 @@ +const postcss = require('postcss') +const linter = require('./index') + +const css = require('fs').readFileSync(__dirname + '/example.css', 'utf-8') + +postcss([linter]).process(css).then(result => { + console.log(result) +})