Add support and tests for tags, migrate style files.

This commit is contained in:
David Anson 2015-03-16 23:25:06 -07:00
parent 0bd6dea637
commit 139e474a12
5 changed files with 215 additions and 7 deletions

View file

@ -78,14 +78,35 @@ function lintFile(file, config, callback) {
"tokens": tokens,
"lines": lines
};
var result = {};
var defaultRule = (config.default !== undefined) && !!config.default;
// Run each rule
// Merge rules/tags and sanitize config
var mergedRules = {};
var ruleDefault = (config.default !== undefined) && !!config.default;
rules.forEach(function forRule(rule) {
var ruleConfig = config[rule.name];
if (ruleConfig || (defaultRule && (ruleConfig === undefined))) {
// Pass rule-specific options
params.options = (ruleConfig instanceof Object) ? ruleConfig : {};
mergedRules[rule.name] = ruleDefault;
});
Object.keys(config).forEach(function forKey(key) {
var value = config[key];
if (value) {
if (!(value instanceof Object)) {
value = {};
}
} else {
value = false;
}
if (ruleToDescription[key]) {
mergedRules[key] = value;
} else if (tagToRules[key]) {
tagToRules[key].forEach(function forRule(rule) {
mergedRules[rule] = value;
});
}
});
// Run each enabled rule
var result = {};
rules.forEach(function forRule(rule) {
if (mergedRules[rule.name]) {
// Configure rule
params.options = mergedRules[rule.name];
var errors = [];
rule.func(params, errors);
// Record any errors