LintConfig - bhsd-harry/wikiparser-node GitHub Wiki
This is an internal document. For visitors, you can now go back to the home page.
// validateConfigValue
var {lintConfig: {rules}} = Parser;
rules.h1 = 0;
assert.strictEqual(rules.getSeverity('h1'), false);
rules.h1 = 'off';
assert.strictEqual(rules.getSeverity('h1'), false);
rules.h1 = false;
assert.strictEqual(rules.getSeverity('h1'), false);
rules.h1 = 1;
assert.strictEqual(rules.getSeverity('h1'), 'warning');
rules.h1 = 'warning';
assert.strictEqual(rules.getSeverity('h1'), 'warning');
rules.h1 = 2;
assert.strictEqual(rules.getSeverity('h1'), 'error');
rules.h1 = 'error';
assert.strictEqual(rules.getSeverity('h1'), 'error');
rules.h1 = [1];
assert.strictEqual(rules.getSeverity('h1'), 'warning');
rules.h1 = ['warning'];
assert.strictEqual(rules.getSeverity('h1'), 'warning');
rules.h1 = [2, {}];
assert.strictEqual(rules.getSeverity('h1'), 'error');
rules.h1 = ['error', {test: 'off'}];
assert.strictEqual(rules.getSeverity('h1'), 'error');
assert.strictEqual(rules.getSeverity('h1', 'test'), false);
// legacy config
Parser.lintConfig = {h1: 2};
assert.strictEqual(Parser.lintConfig.rules.getSeverity('h1'), 'error');
assert.ok(Parser.lintConfig.computeEditInfo);
assert.ok(Parser.lintConfig.fix);
assert.ok(!Parser.lintConfig.ignoreDisables);
assert.strictEqual(Parser.lintConfig.configurationComment, 'lint');
// computeEditInfo
var error1 = {
rule: 'no-ignored',
severity: 'error',
message: 'invalid conversion flag',
startLine: 0,
startCol: 2,
startIndex: 2,
endLine: 0,
endCol: 3,
endIndex: 3,
},
error2 = {
rule: 'illegal-attr',
severity: 'error',
message: 'invalid attribute name',
startLine: 0,
startCol: 4,
startIndex: 4,
endLine: 0,
endCol: 8,
endIndex: 8,
};
assert.deepStrictEqual(
Parser.parse('-{a|}-').lint(),
Object.assign(
[
{
...error1,
fix: {
desc: 'uppercase',
range: [2, 3],
text: 'A',
},
},
],
{output: '-{A|}-'},
),
);
assert.deepStrictEqual(
Parser.parse('<br attr>').lint(),
[
{
...error2,
suggestions: [
{
desc: 'remove',
range: [4, 8],
text: '',
},
],
},
],
);
Parser.lintConfig.computeEditInfo = false;
assert.deepStrictEqual(
Parser.parse('-{a|}-').lint(),
Object.assign([error1], {output: '-{A|}-'}),
);
assert.deepStrictEqual(
Parser.parse('<br attr>').lint(),
[error2],
);
// fix
var error = {
rule: 'unmatched-tag',
severity: 'error',
message: 'tag that is both closing and self-closing',
startLine: 0,
startCol: 0,
startIndex: 0,
endLine: 0,
endCol: 5,
endIndex: 5,
fix: {
desc: 'open',
range: [1, 2],
text: '',
},
};
assert.deepStrictEqual(
Parser.parse('</br>').lint(),
Object.assign([error], {output: '<br>'}),
);
Parser.lintConfig.fix = false;
assert.deepStrictEqual(
Parser.parse('</br>').lint(),
[error],
);
// ignoreDisables
var error = {
rule: 'tag-like',
severity: 'error',
message: 'lonely "<"',
startLine: 0,
startCol: 1,
startIndex: 1,
endLine: 0,
endCol: 3,
endIndex: 3,
suggestions: [
{
desc: 'escape',
range: [1, 2],
text: '<',
},
],
};
assert.deepStrictEqual(
Parser.parse('a<b <!-- lint-disable-line -->').lint(),
[],
);
Parser.lintConfig.ignoreDisables = true;
assert.deepStrictEqual(
Parser.parse('a<b <!-- lint-disable-line -->').lint(),
[error],
);
// configurationComment
var error = {
rule: 'lonely-http',
severity: 'warning',
message: 'lonely "http://"',
startLine: 0,
startCol: 0,
startIndex: 0,
endLine: 0,
endCol: 7,
endIndex: 7,
};
assert.deepStrictEqual(
Parser.parse('http:// <!-- wikilint-disable-line -->').lint(),
[error],
);
Parser.lintConfig.configurationComment = 'wikilint';
assert.deepStrictEqual(
Parser.parse('http:// <!-- wikilint-disable-line -->').lint(),
[],
);