From 667f09d923b758afc19746a3b2f7cc1edf7a0820 Mon Sep 17 00:00:00 2001 From: taoqf Date: Mon, 9 Mar 2020 14:32:49 +0800 Subject: [PATCH] use const --- .eslintignore | 3 + test/html.js | 199 +++++++++++++++++++++++++------------------------- 2 files changed, 102 insertions(+), 100 deletions(-) create mode 100644 .eslintignore diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..6372315 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +test/ +dist/ +node_modules/ diff --git a/test/html.js b/test/html.js index 054d7cf..fd24c4e 100644 --- a/test/html.js +++ b/test/html.js @@ -1,20 +1,19 @@ -var should = require('should'); -var fs = require('fs'); -var util = require('util'); +const should = require('should'); +const fs = require('fs'); -var HTMLParser = require('../dist'); -var Matcher = require('../dist/matcher').default; -var HTMLElement = require('../dist/nodes/html').default; -var TextNode = require('../dist/nodes/text').default; -var CommentNode = require('../dist/nodes/comment').default; +const HTMLParser = require('../dist'); +const Matcher = require('../dist/matcher').default; +const HTMLElement = require('../dist/nodes/html').default; +const TextNode = require('../dist/nodes/text').default; +const CommentNode = require('../dist/nodes/comment').default; describe('HTML Parser', function () { describe('Matcher', function () { it('should match corrent elements', function () { - var matcher = new Matcher('#id .a a.b *.a.b .a.b * a'); - var MatchesNothingButStarEl = new HTMLElement('_', {}); - var withIdEl = new HTMLElement('p', { id: 'id' }); - var withClassNameEl = new HTMLElement('a', { class: 'a b' }); + const matcher = new Matcher('#id .a a.b *.a.b .a.b * a'); + const MatchesNothingButStarEl = new HTMLElement('_', {}); + const withIdEl = new HTMLElement('p', { id: 'id' }); + const withClassNameEl = new HTMLElement('a', { class: 'a b' }); matcher.advance(MatchesNothingButStarEl).should.not.be.ok; // #id matcher.advance(withClassNameEl).should.not.be.ok; // #id @@ -50,17 +49,17 @@ describe('HTML Parser', function () { }); }); - var parseHTML = HTMLParser.parse; + const parseHTML = HTMLParser.parse; describe('parse()', function () { it('should parse "

Hello

" and return root element', function () { - var root = parseHTML('

Hello

'); + const root = parseHTML('

Hello

'); - var p = new HTMLElement('p', { id: 'id' }, 'id="id"'); + const p = new HTMLElement('p', { id: 'id' }, 'id="id"'); p.appendChild(new HTMLElement('a', { class: 'cls' }, 'class=\'cls\'')) .appendChild(new TextNode('Hello')); - var ul = p.appendChild(new HTMLElement('ul', {}, '')); + const ul = p.appendChild(new HTMLElement('ul', {}, '')); ul.appendChild(new HTMLElement('li', {}, '')); ul.appendChild(new HTMLElement('li', {}, '')); p.appendChild(new HTMLElement('span', {}, '')); @@ -70,14 +69,14 @@ describe('HTML Parser', function () { it('should parse "

" and return root element', function () { - var root = parseHTML('

', { + const root = parseHTML('

', { lowerCaseTagName: true }); - var div = new HTMLElement('div', {}, ''); - var a = div.appendChild(new HTMLElement('a', {}, '')); - var img = a.appendChild(new HTMLElement('img', {}, '')); - var p = div.appendChild(new HTMLElement('p', {}, '')); + const div = new HTMLElement('div', {}, ''); + const a = div.appendChild(new HTMLElement('a', {}, '')); + const img = a.appendChild(new HTMLElement('img', {}, '')); + const p = div.appendChild(new HTMLElement('p', {}, '')); root.firstChild.should.eql(div); @@ -86,7 +85,7 @@ describe('HTML Parser', function () { it('should deal uppercase', function () { const html = 'SISREG III

CONSULTA AO CADASTRO DE PACIENTES SUS



Processando...


'; - var root = parseHTML(html, { + const root = parseHTML(html, { lowerCaseTagName: true }); @@ -97,52 +96,52 @@ describe('HTML Parser', function () { it('should parse "

" and return root element', function () { - var root = parseHTML('

'); + const root = parseHTML('

'); - var div = new HTMLElement('div', {}, ''); - var a = div.appendChild(new HTMLElement('a', {}, '')); - var img = a.appendChild(new HTMLElement('img', {}, '')); - var p = div.appendChild(new HTMLElement('p', {}, '')); + const div = new HTMLElement('div', {}, ''); + const a = div.appendChild(new HTMLElement('a', {}, '')); + const img = a.appendChild(new HTMLElement('img', {}, '')); + const p = div.appendChild(new HTMLElement('p', {}, '')); root.firstChild.should.eql(div); }); it('should parse "
" and return root element without comments', function () { - var root = parseHTML('
'); + const root = parseHTML('
'); - var div = new HTMLElement('div', {}, ''); - var a = div.appendChild(new HTMLElement('a', {}, '')); + const div = new HTMLElement('div', {}, ''); + const a = div.appendChild(new HTMLElement('a', {}, '')); root.firstChild.should.eql(div); }); it('should parse "
" and return root element with comments', function () { - var root = parseHTML('
', { comment: true }); + const root = parseHTML('
', { comment: true }); - var div = new HTMLElement('div', {}, ''); - var a = div.appendChild(new HTMLElement('a', {}, '')); - var comment = a.appendChild(new CommentNode(' my comment ')); + const div = new HTMLElement('div', {}, ''); + const a = div.appendChild(new HTMLElement('a', {}, '')); + const comment = a.appendChild(new CommentNode(' my comment ')); root.firstChild.should.eql(div); }); it('should not parse HTML inside comments', function () { - var root = parseHTML('
', { comment: true }); + const root = parseHTML('
', { comment: true }); - var div = new HTMLElement('div', {}, ''); - var comment = div.appendChild(new CommentNode('')); + const div = new HTMLElement('div', {}, ''); + const comment = div.appendChild(new CommentNode('')); root.firstChild.should.eql(div); }); it('should parse picture element', function () { - var root = parseHTML('Example'); + const root = parseHTML('Example'); - var picture = new HTMLElement('picture', {}, ''); - var source = picture.appendChild(new HTMLElement('source', {}, 'srcset="/images/example-1.jpg 1200w, /images/example-2.jpg 1600w" sizes="100vw"')); - var img = picture.appendChild(new HTMLElement('img', {}, 'src="/images/example.jpg" alt="Example"')); + const picture = new HTMLElement('picture', {}, ''); + const source = picture.appendChild(new HTMLElement('source', {}, 'srcset="/images/example-1.jpg 1200w, /images/example-2.jpg 1600w" sizes="100vw"')); + const img = picture.appendChild(new HTMLElement('img', {}, 'src="/images/example.jpg" alt="Example"')); root.firstChild.should.eql(picture); @@ -150,7 +149,7 @@ describe('HTML Parser', function () { it('should not extract text in script and style by default', function () { - var root = parseHTML(''); + const root = parseHTML(''); root.firstChild.childNodes.should.be.empty; root.lastChild.childNodes.should.be.empty; @@ -159,7 +158,7 @@ describe('HTML Parser', function () { it('should extract text in script and style when ask so', function () { - var root = parseHTML('', { + const root = parseHTML('', { script: true, style: true }); @@ -175,7 +174,7 @@ describe('HTML Parser', function () { it('should be able to parse "html/incomplete-script" file', function () { - var root = parseHTML(fs.readFileSync(__dirname + '/html/incomplete-script').toString(), { + const root = parseHTML(fs.readFileSync(__dirname + '/html/incomplete-script').toString(), { script: true }); @@ -188,14 +187,14 @@ describe('HTML Parser', function () { it('should parse "

.." very fast', function () { - for (var i = 0; i < 100; i++) + for (let i = 0; i < 100; i++) parseHTML('

'); }); it('should parse "

.." fast', function () { - for (var i = 0; i < 100; i++) + for (let i = 0; i < 100; i++) parseHTML('

', { lowerCaseTagName: true }); @@ -205,7 +204,7 @@ describe('HTML Parser', function () { // Test for broken tags.

something

it('should parse "

content

other

" (fix h3, span closing tag) very fast', function () { - var root = parseHTML(fs.readFileSync(__dirname + '/html/incomplete-script').toString()); + const root = parseHTML(fs.readFileSync(__dirname + '/html/incomplete-script').toString()); }); }); @@ -214,43 +213,43 @@ describe('HTML Parser', function () { // parse with validation tests it('should return Object with valid: true. does not count

as error. instead fixes it to

', function () { - var result = parseHTML('

'); + const result = parseHTML('

'); result.valid.should.eql(true); }) it('should return Object with valid: true. does not count

as error. instead fixes it to

', function () { - var result = parseHTML('

'); + const result = parseHTML('

'); result.valid.should.eql(true); }) it('should return Object with valid: false. does not count

as error', function () { - var result = parseHTML('

'); + const result = parseHTML('

'); result.valid.should.eql(false); }) it('hillcrestpartyrentals.html should return Object with valid: false. not closing

tag on line 476', function () { - var result = parseHTML(fs.readFileSync(__dirname + '/html/hillcrestpartyrentals.html').toString(), { + const result = parseHTML(fs.readFileSync(__dirname + '/html/hillcrestpartyrentals.html').toString(), { noFix: true }); result.valid.should.eql(false); }) it('google.html should return Object with valid: true', function () { - var result = parseHTML(fs.readFileSync(__dirname + '/html/google.html').toString(), { + const result = parseHTML(fs.readFileSync(__dirname + '/html/google.html').toString(), { noFix: true }); result.valid.should.eql(true); }) it('gmail.html should return Object with valid: true', function () { - var result = parseHTML(fs.readFileSync(__dirname + '/html/gmail.html').toString(), { + const result = parseHTML(fs.readFileSync(__dirname + '/html/gmail.html').toString(), { noFix: true }); result.valid.should.eql(true); }) it('ffmpeg.html should return Object with valid: false (extra opening

', function () { - var result = parseHTML(fs.readFileSync(__dirname + '/html/ffmpeg.html').toString(), { + const result = parseHTML(fs.readFileSync(__dirname + '/html/ffmpeg.html').toString(), { noFix: true }); result.valid.should.eql(false); @@ -259,24 +258,24 @@ describe('HTML Parser', function () { // fix issue speed test it('should fix "

" to "

"', function () { - var result = parseHTML('

'); + const result = parseHTML('

'); result.valid.should.eql(false); result.toString().should.eql('

'); }) it('should fix "

" to "

"', function () { - var result = parseHTML('

'); + const result = parseHTML('

'); result.valid.should.eql(false); result.toString().should.eql('

'); }) it('gmail.html should return Object with valid: true', function () { - var result = parseHTML(fs.readFileSync(__dirname + '/html/gmail.html').toString().replace(/<\//gi, '<')); + const result = parseHTML(fs.readFileSync(__dirname + '/html/gmail.html').toString().replace(/<\//gi, '<')); result.valid.should.eql(false); }) it('gmail.html should return Object with valid: true', function () { - var result = parseHTML(fs.readFileSync(__dirname + '/html/nice.html').toString().replace(/<\//gi, '<')); + const result = parseHTML(fs.readFileSync(__dirname + '/html/nice.html').toString().replace(/<\//gi, '<')); result.valid.should.eql(false); }) @@ -284,7 +283,7 @@ describe('HTML Parser', function () { describe('TextNode', function () { describe('#isWhitespace', function () { - var node = new TextNode(''); + let node = new TextNode(''); node.isWhitespace.should.be.ok; node = new TextNode(' \t'); node.isWhitespace.should.be.ok; @@ -297,9 +296,9 @@ describe('HTML Parser', function () { describe('#removeWhitespace()', function () { it('should remove whitespaces while preserving nodes with content', function () { - var root = parseHTML('

\r \n \t

123

'); + const root = parseHTML('

\r \n \t

123

'); - var p = new HTMLElement('p', {}, ''); + const p = new HTMLElement('p', {}, ''); p.appendChild(new HTMLElement('h5', {}, '')) .appendChild(new TextNode('123')); @@ -309,7 +308,7 @@ describe('HTML Parser', function () { describe('#rawAttributes', function () { it('should return escaped attributes of the element', function () { - var root = parseHTML('

'); + const root = parseHTML('

'); root.firstChild.rawAttributes.should.eql({ 'a': '12', 'data-id': '!$$&', @@ -320,7 +319,7 @@ describe('HTML Parser', function () { describe('#attributes', function () { it('should return attributes of the element', function () { - var root = parseHTML('

'); + const root = parseHTML('

'); root.firstChild.attributes.should.eql({ 'a': '12', 'data-id': '!$$&', @@ -333,24 +332,24 @@ describe('HTML Parser', function () { describe('#getAttribute', function () { it('should return value of the attribute', function () { - var root = parseHTML('

'); + const root = parseHTML('

'); root.firstChild.getAttribute('a').should.eql('a1b'); }); it('should return null when there is no such attribute', function () { - var root = parseHTML('

'); + const root = parseHTML('

'); should.equal(root.firstChild.getAttribute('b'), null); }); it('should return empty string as broser behavior', function () { - var root = parseHTML(''); - var input = root.firstChild; + const root = parseHTML(''); + const input = root.firstChild; input.getAttribute('required').should.eql(''); }); it('should return null as broser behavior', function () { - var root = parseHTML(''); - var input = root.firstChild; + const root = parseHTML(''); + const input = root.firstChild; input.setAttribute('readonly', null); input.getAttribute('readonly').should.eql('null'); }); @@ -358,8 +357,8 @@ describe('HTML Parser', function () { describe('#setAttribute', function () { it('should edit the attributes of the element', function () { - var root = parseHTML('

'); - var attr = root.firstChild.attributes; + const root = parseHTML('

'); + const attr = root.firstChild.attributes; root.firstChild.setAttribute('a', 13); attr.should.eql({ 'a': '13', @@ -368,7 +367,7 @@ describe('HTML Parser', function () { root.firstChild.toString().should.eql('

'); }); it('should add an attribute to the element', function () { - var root = parseHTML('

'); + const root = parseHTML('

'); root.firstChild.setAttribute('b', 13); root.firstChild.attributes.should.eql({ 'a': '12', @@ -377,8 +376,8 @@ describe('HTML Parser', function () { root.firstChild.toString().should.eql('

'); }); it('should convert value to string', function () { - var root = parseHTML('

'); - var p = root.firstChild; + const root = parseHTML('

'); + const p = root.firstChild; p.setAttribute('b', null); p.setAttribute('c', undefined); p.getAttribute('b').should.eql('null'); @@ -386,13 +385,13 @@ describe('HTML Parser', function () { p.toString().should.eql('

'); }); it('should throw type Error', function () { - var root = parseHTML('

'); - var p = root.firstChild; + const root = parseHTML('

'); + const p = root.firstChild; should.throws(function () { p.setAttribute('b') }); should.throws(function () { p.setAttribute() }); }); it('should keep quotes arount value', function () { - var root = parseHTML('

'); + const root = parseHTML('

'); root.firstChild.setAttribute('b', 13); root.firstChild.setAttribute('c', '2'); root.firstChild.attributes.should.eql({ @@ -406,7 +405,7 @@ describe('HTML Parser', function () { describe('#setAttributes', function () { it('should return attributes of the element', function () { - var root = parseHTML('

'); + const root = parseHTML('

'); root.firstChild.setAttributes({ c: 12, d: '&&<>foo' @@ -421,16 +420,16 @@ describe('HTML Parser', function () { }); describe('#removeAttribute', function () { - var root = parseHTML(''); - var input = root.firstChild; + const root = parseHTML(''); + const input = root.firstChild; input.removeAttribute('required'); input.toString().should.eql(''); }); describe('#hasAttribute', function () { it('should return true or false when has or has not some attribute', function () { - var root = parseHTML(''); - var input = root.firstChild; + const root = parseHTML(''); + const input = root.firstChild; input.hasAttribute('required').should.eql(true); input.removeAttribute('required'); input.hasAttribute('required').should.eql(false); @@ -439,7 +438,7 @@ describe('HTML Parser', function () { describe('#querySelector()', function () { it('should return correct elements in DOM tree', function () { - var root = parseHTML('
'); + const root = parseHTML('
'); root.querySelector('#id').should.eql(root.firstChild); root.querySelector('span.a').should.eql(root.firstChild.firstChild.firstChild); root.querySelector('span.b').should.eql(root.firstChild.firstChild.firstChild); @@ -453,7 +452,7 @@ describe('HTML Parser', function () { describe('#querySelectorAll()', function () { it('should return correct elements in DOM tree', function () { - var root = parseHTML('
'); + const root = parseHTML('
'); root.querySelectorAll('#id').should.eql([root.firstChild]); root.querySelectorAll('span.a').should.eql([root.firstChild.firstChild.firstChild]); root.querySelectorAll('span.b').should.eql([root.firstChild.firstChild.firstChild]); @@ -463,19 +462,19 @@ describe('HTML Parser', function () { root.querySelectorAll('#id, #id .b').should.eql([root.firstChild, root.firstChild.firstChild.firstChild]); }); it('should return just one element', function () { - var root = parseHTML('