elementLike - bhsd-harry/wikiparser-node GitHub Wiki

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

// children (main)
var {elementLike} = require('../mixin/elementLike');
var a = {type: 'a'},
	b = {type: 'text'},
	ElementLike, token;
class S {
	childNodes = [a, b];
}
ElementLike = elementLike(S);
token = new ElementLike();
assert.deepStrictEqual(token.children, [a]);
// firstElementChild (main)
var {elementLike} = require('../mixin/elementLike');
var a = {type: 'text'},
	b = {type: 'b'},
	ElementLike, token;
class S {
	childNodes = [a, b];
}
ElementLike = elementLike(S);
token = new ElementLike();
assert.strictEqual(token.firstElementChild, b);
// lastElementChild (main)
var {elementLike} = require('../mixin/elementLike');
var a = {type: 'a'},
	b = {type: 'text'},
	ElementLike, token;
class S {
	childNodes = [a, b];
}
ElementLike = elementLike(S);
token = new ElementLike();
assert.strictEqual(token.lastElementChild, a);
// childElementCount (main)
var {elementLike} = require('../mixin/elementLike');
var a = {type: 'a'},
	b = {type: 'text'},
	ElementLike, token;
class S {
	childNodes = [a, b];
}
ElementLike = elementLike(S);
token = new ElementLike();
assert.strictEqual(token.childElementCount, 1);
// querySelector (Node.js)
var {elementLike} = require('../mixin/elementLike');
var a = {type: 'a'},
	b = {type: 'b'},
	ElementLike, token;
class S {
	childNodes = [a, b];
}
ElementLike = elementLike(S);
token = new ElementLike();
assert.strictEqual(token.querySelector('a'), a);
// querySelectorAll (Node.js)
var {elementLike} = require('../mixin/elementLike');
var childNodes = [{type: 'text'}],
	ElementLike, token, child;
class S {
	get childNodes() {
		return childNodes.includes(this) ? [] : childNodes;
	}
}
ElementLike = elementLike(S);
token = new ElementLike();
child = new ElementLike();
child.type = 'b';
childNodes.push(child);
assert.deepStrictEqual(token.querySelectorAll('b'), [child]);
// escape (Node.js)
var {elementLike} = require('../mixin/elementLike');
var i = 0,
	a = {
		escape() {
			i++;
		},
	},
	ElementLike, token;
class S {
	childNodes = [a, a];
}
ElementLike = elementLike(S);
token = new ElementLike();
token.escape();
assert.strictEqual(i, 2);
// getElementByTypes (main)
var {elementLike} = require('../mixin/elementLike');
var a = {type: 'a'},
	b = {type: 'b'},
	ElementLike, token;
class S {
	childNodes = [a, b];
}
ElementLike = elementLike(S);
token = new ElementLike();
assert.strictEqual(token.getElementByTypes('a, b'), a);
// getElementById (main)
var {elementLike} = require('../mixin/elementLike');
var a = {id: 'a'},
	b = {id: 'b'},
	ElementLike, token;
class S {
	childNodes = [a, b];
}
ElementLike = elementLike(S);
token = new ElementLike();
assert.strictEqual(token.getElementById('a'), a);
// getElementsByClassName (main)
var {elementLike} = require('../mixin/elementLike');
var childNodes = [{type: 'text'}],
	ElementLike, token, child;
class S {
	get childNodes() {
		return childNodes.includes(this) ? [] : childNodes;
	}
}
ElementLike = elementLike(S);
token = new ElementLike();
child = new ElementLike();
child.classList = new Set('b');
childNodes.push(child);
assert.deepStrictEqual(token.getElementsByClassName('b'), [child]);
// getElementsByTagName (main)
var {elementLike} = require('../mixin/elementLike');
var childNodes = [{type: 'text'}],
	ElementLike, token, child;
class S {
	get childNodes() {
		return childNodes.includes(this) ? [] : childNodes;
	}
}
ElementLike = elementLike(S);
token = new ElementLike();
child = new ElementLike();
child.type = 'ext';
child.name = 'b';
childNodes.push(child);
assert.deepStrictEqual(token.getElementsByTagName('b'), [child]);