lint - bhsd-harry/wikiparser-node GitHub Wiki

This is an internal document. For visitors, you can now go back to the home page.

// isFostered (Node.js)
var {isFostered} = require('../util/lint');
var check = text => isFostered(Parser.parse(text));
assert.strictEqual(check(' <!-- --> '), false);
assert.strictEqual(check('<!-- --> !'), false);
assert.strictEqual(check('<!-- --> {{!}}'), false);
assert.strictEqual(check('<!-- --> <td>'), false);
assert.strictEqual(check('<!-- --> {{{|!}}}'), false);
assert.strictEqual(check('<!-- --> {{{|x}}}'), 2);
assert.strictEqual(check('<!-- --> {{{|{{x}}}}}'), 1);
assert.strictEqual(check('{{#if:||!}}'), false);
assert.strictEqual(check('{{#if:|{{x}}|x}}'), 2);
assert.strictEqual(check('{{#if:|{{x}}|!}}'), 1);
assert.strictEqual(check('{{x}}'), 1);
assert.strictEqual(check('{{#invoke:x|y}}'), 1);
assert.strictEqual(check('x'), 2);
// getEndPos (Node.js)
var {getEndPos} = require('../util/lint');
assert.deepStrictEqual(
	getEndPos(1, 1, 1, 1),
	{line: 1, character: 2},
);
assert.deepStrictEqual(
	getEndPos(1, 1, 2, 1),
	{line: 2, character: 1},
);
// generateForChild (Node.js)
var {generateForChild} = require('../util/lint'),
	{Token} = require('../src/index');
var root = new Token(),
	child = new Token('a\nb');
root.append(child);
assert.deepStrictEqual(
	generateForChild(child, {start: 0}, 'rule', 'msg'),
	{
		rule: 'rule',
		message: 'msg',
		severity: 'error',
		startIndex: 0,
		endIndex: 3,
		startLine: 0,
		startCol: 0,
		endLine: 1,
		endCol: 1,
	},
);
// generateForSelf (Node.js)
var {generateForSelf} = require('../util/lint'),
	{Token} = require('../src/index');
var root = new Token('a\nb');
assert.deepStrictEqual(
	generateForSelf(root, {start: 0}, 'rule', 'msg'),
	{
		rule: 'rule',
		message: 'msg',
		severity: 'error',
		startIndex: 0,
		endIndex: 3,
		startLine: 0,
		startCol: 0,
		endLine: 1,
		endCol: 1,
	},
);
// cache (main)
var {cache} = require('../util/lint');
var store1,
	store2,
	counter = 0,
	compute = () => counter++,
	f = () => cache(store1, compute, value => {
		store1 = value;
	}),
	g = () => cache(store2, compute, value => {
		store2 = value;
	}, true);
Parser.viewOnly = true;
assert.strictEqual(f(), 0);
assert.strictEqual(f(), 0);
Parser.viewOnly = false;
assert.strictEqual(f(), 1);
assert.strictEqual(g(), 2);
assert.strictEqual(g(), 2);
// provideValues (Node.js)
var {provideValues} = require('../util/lint');
assert.deepStrictEqual(
	provideValues('ol', 'type'),
	['1', 'a', 'A', 'i', 'I'],
);
assert.deepStrictEqual(
	provideValues('th', 'scope'),
	['row', 'col', 'rowgroup', 'colgroup'],
);
assert.deepStrictEqual(
	provideValues('p', 'dir'),
	['ltr', 'rtl', 'auto'],
);
assert.deepStrictEqual(
	provideValues('p', 'aria-hidden'),
	['true', 'false'],
);
assert.deepStrictEqual(
	provideValues('p', 'id'),
	[],
);
// fixBy (Node.js)
var {fixBy} = require('../util/lint');
var e = {
	startIndex: 0,
	endIndex: 1,
};
assert.deepStrictEqual(
	fixBy(e, 'left-bracket', '[', 1),
	{
		desc: 'opening bracket',
		range: [1, 1],
		text: '[',
	},
);
// fixByInsert (Node.js)
var {fixByInsert} = require('../util/lint');
assert.deepStrictEqual(
	fixByInsert(1, 'left-bracket', '['),
	{
		desc: 'opening bracket',
		range: [1, 1],
		text: '[',
	},
);
// fixByRemove (Node.js)
var {fixByRemove} = require('../util/lint');
var e = {
	startIndex: 0,
	endIndex: 1,
};
assert.deepStrictEqual(
	fixByRemove(e, 1, '['),
	{
		desc: 'remove',
		range: [1, 1],
		text: '[',
	},
);
assert.deepStrictEqual(
	fixByRemove(1, 1, '['),
	{
		desc: 'remove',
		range: [1, 2],
		text: '[',
	},
);
// fixByDecode (Node.js)
var {fixByDecode} = require('../util/lint');
var e = {
		startIndex: 0,
		endIndex: 3,
	},
	link = Parser.parse('%25');
assert.deepStrictEqual(
	fixByDecode(e, link),
	{
		desc: 'decode',
		range: [0, 3],
		text: '%',
	},
);
// fixByClose (Node.js)
var {fixByClose} = require('../util/lint');
assert.deepStrictEqual(
	fixByClose(1, '[', -1),
	{
		desc: 'close',
		range: [0, 1],
		text: '[',
	},
);
// fixByOpen (Node.js)
var {fixByOpen} = require('../util/lint');
assert.deepStrictEqual(
	fixByOpen(1),
	{
		desc: 'open',
		range: [2, 3],
		text: '',
	},
);
// fixByComment (Node.js)
var {fixByComment} = require('../util/lint');
var e = {
	startIndex: 0,
	endIndex: 1,
};
assert.deepStrictEqual(
	fixByComment(e, '['),
	{
		desc: 'comment',
		range: [0, 1],
		text: '<!--[-->',
	},
);
// fixByUpper (Node.js)
var {fixByUpper} = require('../util/lint');
var e = {
	startIndex: 0,
	endIndex: 1,
};
assert.deepStrictEqual(
	fixByUpper(e, 'a'),
	{
		desc: 'uppercase',
		range: [0, 1],
		text: 'A',
	},
);
// fixBySpace (Node.js)
var {fixBySpace} = require('../util/lint');
assert.deepStrictEqual(
	fixBySpace(1, 1),
	{
		desc: 'whitespace',
		range: [1, 2],
		text: ' ',
	},
);
// fixByEscape (Node.js)
var {fixByEscape} = require('../util/lint');
assert.deepStrictEqual(
	fixByEscape(1, '[', 2),
	{
		desc: 'escape',
		range: [1, 3],
		text: '[[',
	},
);
// fixByPipe (Node.js)
var {fixByPipe} = require('../util/lint');
assert.deepStrictEqual(
	fixByPipe(1, '|'),
	{
		desc: 'escape',
		range: [1, 2],
		text: '&#124;',
	},
);
⚠️ **GitHub.com Fallback** ⚠️