Skip to content
This repository has been archived by the owner on Feb 9, 2023. It is now read-only.

Commit

Permalink
Merge pull request #14 from brunch/update-iface-2.0
Browse files Browse the repository at this point in the history
Update interface to 2.0
  • Loading branch information
paulmillr committed Jan 28, 2016
2 parents 2ac4465 + 0b8d1a8 commit b6e4ede
Show file tree
Hide file tree
Showing 7 changed files with 146 additions and 125 deletions.
85 changes: 85 additions & 0 deletions .eslintrc.json
@@ -0,0 +1,85 @@
{
"env": {
"node": true,
"es6": true
},
"rules": {
"block-spacing": [2, "always"],
"brace-style": [2, "1tbs", {"allowSingleLine": true}],
"comma-style": [2, "last"],
"func-style": [2, "expression"],
"semi": [2, "always"],
"quotes": [2, "single", "avoid-escape"],
"indent": [2, 2, {"SwitchCase": 1}],
"dot-location": [2, "property"],
"camelcase": [1, {"properties": "always"}],
"comma-spacing": [2, {"before": false, "after": true}],
"comma-dangle": [2, "never"],
"semi-spacing": [2, {"before": false, "after": true}],
"curly": [2, "multi-line", "consistent"],
"no-debugger": 2,
"no-dupe-args": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty": 2,
"no-ex-assign": 2,
"no-extra-semi": 2,
"no-func-assign": 2,
"no-irregular-whitespace": 2,
"no-sparse-arrays": 2,
"no-unexpected-multiline": 2,
"no-unreachable": 2,
"no-unused-vars": [2, {"varsIgnorePattern": "ignored"}],
"valid-typeof": 2,
"eqeqeq": [2, "allow-null"],
"no-array-constructor": 2,
"no-caller": 2,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-fallthrough": 2,
"no-labels": 2,
"no-iterator": 2,
"no-magic-numbers": [1, {"ignore": [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]}],
"no-multi-spaces": 2,
"no-native-reassign": 2,
"no-new-func": 2,
"no-new-wrappers": 2,
"no-new": 2,
"no-octal-escape": 2,
"no-octal": 2,
"no-redeclare": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-unused-expressions": 2,
"no-useless-call": 2,
"no-warning-comments": [1, {"terms": ["todo", "fixme", "xxx"], "location": "start"}],
"no-with": 2,
"new-parens": 2,
"wrap-iife": [2, "inside"],
"no-catch-shadow": 2,
"no-delete-var": 2,
"no-shadow-restricted-names": 2,
"no-undef": 2,
"callback-return": 2,
"handle-callback-err": 2,
"no-path-concat": 2,
"array-bracket-spacing": 2,
"eol-last": 2,
"no-multiple-empty-lines": [2, {"max": 2}],
"no-spaced-func": 2,
"no-trailing-spaces": 2,
"no-unneeded-ternary": 2,
"space-before-keywords": 2,
"space-after-keywords": 2,
"space-before-blocks": 2,
"space-before-function-paren": [2, "never"],
"space-in-parens": 2,
"space-return-throw-case": 2,
"space-unary-ops": [2, {"words": true, "nonwords": false}],
"arrow-spacing": [2, {"before": true, "after": true}],
"prefer-arrow-callback": 2,
"prefer-template": 0,
"prefer-const": 2
}
}
50 changes: 50 additions & 0 deletions index.js
@@ -0,0 +1,50 @@
'use strict';
const linter = require('coffeelint');
const fs = require('fs');

const formatError = error => {
//const evidence = (error.rule ? '\n\n' + error.rule + '\n' : '\n');
return error.level + ': ' + error.rule + ' at line ' + error.lineNumber + '. ' + (error.context || '');
};

class CoffeeLinter {
constructor(config) {
this.config = config || {};
const cfg = config.plugins && config.plugins.coffeelint || config.coffeelint || {};
if (config.coffeelint) {
console.warn('Warning: config.coffeelint is deprecated, move it to config.plugins.coffeelint');
}
this.useCoffeelintJson = cfg.useCoffeelintJson;
const watchedPaths = this.config && this.config.paths && this.config.paths.watched || ['app'];
this.pattern = cfg.pattern || new RegExp(`(${watchedPaths.join('|')}).*\\coffee$`);
if (this.useCoffeelintJson) {
try {
const coffeelintJson = JSON.parse(fs.readFileSync('coffeelint.json'));
this.options = coffeelintJson;
} catch (_error) {
throw new Error('useCoffeelintJson is true but coffeelint.json does not exist');
}
} else {
this.options = cfg.options;
}
}

lint(params) {
const data = params.data;

try {
const error = linter.lint(data, this.options).filter(err => err != null).map(formatError).join('\n');
if (error) return Promise.reject(error);
} catch (error) {
return Promise.reject(error);
}

return Promise.resolve();
}
}

CoffeeLinter.prototype.brunchPlugin = true;
CoffeeLinter.prototype.type = 'javascript';
CoffeeLinter.prototype.extension = 'coffee';

module.exports = CoffeeLinter;
66 changes: 0 additions & 66 deletions lib/index.js

This file was deleted.

9 changes: 4 additions & 5 deletions package.json
Expand Up @@ -6,17 +6,16 @@
"type": "git",
"url": "git@github.com:brunch/coffeelint-brunch.git"
},
"main": "./lib/",
"main": "./index",
"scripts": {
"prepublish": "rm -rf lib && coffee --bare --output lib/ src/",
"test": "node_modules/.bin/mocha --compilers coffee:coffee-script --require test/common.js"
"test": "node_modules/.bin/eslint index.js && node_modules/.bin/mocha"
},
"dependencies": {
"coffeelint": ">= 0.4.0"
},
"devDependencies": {
"chai": "*",
"coffee-script": "*",
"mocha": "*"
"mocha": "*",
"eslint": "^1.10.3"
}
}
42 changes: 0 additions & 42 deletions src/index.coffee

This file was deleted.

17 changes: 7 additions & 10 deletions test/plugin_test.js → test.js
@@ -1,3 +1,6 @@
const expect = require('chai').expect;
const Plugin = require('.');

describe('Plugin', function() {
var plugin;

Expand All @@ -22,16 +25,13 @@ describe('Plugin', function() {
it('should lint correctly', function(done) {
var content = 'a = 228\nb = () ->\n console.log a'

plugin.lint(content, 'file.coffee', function(error) {
expect(error).not.to.be.ok;
done();
});
plugin.lint({data: content, path: 'file.coffee'}).then(() => done(), error => expect(error).not.to.be.ok);
});

it('should give correct errors', function(done) {
var content = 'b = () ->\n\t\t a=10'

plugin.lint(content, 'file.coffee', function(error) {
plugin.lint({data: content, path: 'file.coffee'}).then(null, error => {
expect(error).to.contain('error: indentation at line 2. Expected 2 got 5\nerror: no_tabs at line 2.');
done();
});
Expand All @@ -40,10 +40,7 @@ describe('Plugin', function() {
it('should read configs global options list', function(done) {
var content = 'alert("end of line");'

plugin.lint(content, 'file.coffee', function(error) {
expect(error).not.to.be.ok;
done();
});
plugin.lint({data: content, path: 'file.coffee'}).then(() => done(), error => expect(error).not.to.be.ok);
});

it('should read coffeelint.json', function(done) {
Expand All @@ -57,7 +54,7 @@ describe('Plugin', function() {
}
});

plugin.lint(content, 'file.coffee', function(error) {
plugin.lint({data: content, path: 'file.coffee'}).then(null, error => {
expect(error).to.contain('error: no_plusplus at line 1. found \'++\'');
done();
});
Expand Down
2 changes: 0 additions & 2 deletions test/common.js

This file was deleted.

0 comments on commit b6e4ede

Please sign in to comment.