49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
/*jslint node: true, sloppy: true */
|
|
/*globals LINTER_PATH, load */
|
|
|
|
var CSSLint = require("./csslint-node").CSSLint;
|
|
|
|
exports.lint = function (code, config) {
|
|
var results = [];
|
|
|
|
var ruleset = {};
|
|
|
|
// rules that are `false` will be ignored.
|
|
for (var ruleName in config) {
|
|
|
|
if (config[ruleName] === 'warning') {
|
|
ruleset[ruleName] = 1;
|
|
// Rules set to `true` or 'error' will be considered errors
|
|
} else if (config[ruleName]) {
|
|
ruleset[ruleName] = 2;
|
|
}
|
|
|
|
}
|
|
|
|
var report = CSSLint.verify(code, ruleset);
|
|
|
|
report.messages.forEach(function (message) {
|
|
if (message) {
|
|
|
|
// message.type // warning|error
|
|
// message.line
|
|
// message.col
|
|
// message.message
|
|
// message.evidence // Requires sanitizing as it can include CR, LF
|
|
// message.rule // The rule object
|
|
|
|
// We don't pass on the rollup messages
|
|
if (message.rollup !== true) {
|
|
results.push({
|
|
'line': message.line,
|
|
'character': message.col,
|
|
'type': message.type,
|
|
'reason': message.message
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
return results;
|
|
};
|