From 75385c2720d88de3f932c66ff5b939c46609d6a7 Mon Sep 17 00:00:00 2001 From: "Andrey Pavlenko (sub)" Date: Fri, 13 Apr 2018 19:11:15 +0300 Subject: [PATCH] Fix issue #3 --- src/az.tokens.js | 4 +- test/tokens.js | 110 ++++++++++++++++++++++++++++------------------- 2 files changed, 68 insertions(+), 46 deletions(-) diff --git a/src/az.tokens.js b/src/az.tokens.js index 17b717c..9706592 100644 --- a/src/az.tokens.js +++ b/src/az.tokens.js @@ -113,10 +113,10 @@ this.tokens = []; this.source = ''; if (typeof text == 'string') { - this.config = config ? Az.extend(defaults, config) : defaults; + this.config = config ? Object.assign({}, defaults, config) : defaults; this.append(text); } else { - this.config = text ? Az.extend(defaults, text) : defaults; + this.config = text ? Object.assign({}, defaults, text) : defaults; } this.index = -1; } else { diff --git a/test/tokens.js b/test/tokens.js index 7f3c328..befa674 100644 --- a/test/tokens.js +++ b/test/tokens.js @@ -2,78 +2,100 @@ var expect = require('chai').expect; var Az = require('../dist/az'); describe('Az.Tokens', function() { - it('should return empty array for empty string', function () { + it('should return empty array for empty string', function() { var result = Az.Tokens('').done(); expect(result).to.be.an('array'); expect(result).to.have.length(0); }); - it('should parse simple tokens correctly', function () { + it('should parse simple tokens correctly', function() { var result = Az.Tokens('Мама мыла раму. What is 42?').done(); expect(result).to.be.an('array'); expect(result).to.have.length(13); - expect(result[0].type).to.equal('WORD'); // Мама - expect(result[0].subType).to.equal('CYRIL'); + expect(result[0].type.toString()).to.equal('WORD'); // Мама + expect(result[0].subType.toString()).to.equal('CYRIL'); - expect(result[1].type).to.equal('SPACE'); // пробел + expect(result[1].type.toString()).to.equal('SPACE'); // пробел - expect(result[2].type).to.equal('WORD'); // мыла - expect(result[2].subType).to.equal('CYRIL'); + expect(result[2].type.toString()).to.equal('WORD'); // мыла + expect(result[2].subType.toString()).to.equal('CYRIL'); - expect(result[3].type).to.equal('SPACE'); // пробел + expect(result[3].type.toString()).to.equal('SPACE'); // пробел - expect(result[4].type).to.equal('WORD'); // раму - expect(result[4].subType).to.equal('CYRIL'); + expect(result[4].type.toString()).to.equal('WORD'); // раму + expect(result[4].subType.toString()).to.equal('CYRIL'); - expect(result[5].type).to.equal('PUNCT'); // точка + expect(result[5].type.toString()).to.equal('PUNCT'); // точка - expect(result[6].type).to.equal('SPACE'); // пробел + expect(result[6].type.toString()).to.equal('SPACE'); // пробел - expect(result[7].type).to.equal('WORD'); // What - expect(result[7].subType).to.equal('LATIN'); + expect(result[7].type.toString()).to.equal('WORD'); // What + expect(result[7].subType.toString()).to.equal('LATIN'); - expect(result[8].type).to.equal('SPACE'); // пробел + expect(result[8].type.toString()).to.equal('SPACE'); // пробел - expect(result[9].type).to.equal('WORD'); // is - expect(result[9].subType).to.equal('LATIN'); + expect(result[9].type.toString()).to.equal('WORD'); // is + expect(result[9].subType.toString()).to.equal('LATIN'); - expect(result[10].type).to.equal('SPACE'); // пробел + expect(result[10].type.toString()).to.equal('SPACE'); // пробел - expect(result[11].type).to.equal('NUMBER'); // 42 + expect(result[11].type.toString()).to.equal('NUMBER'); // 42 - expect(result[12].type).to.equal('PUNCT'); // вопросительный знак + expect(result[12].type.toString()).to.equal('PUNCT'); // вопросительный знак }); - it('should parse links correctly', function () { + it('should parse links correctly', function() { var result = Az.Tokens('http://site,vk.com,сайт.рф .ru com.').done(); expect(result).to.be.an('array'); expect(result).to.have.length(11); - expect(result[0].type).to.equal('LINK'); - expect(result[1].type).to.equal('PUNCT'); - expect(result[2].type).to.equal('LINK'); - expect(result[3].type).to.equal('PUNCT'); - expect(result[4].type).to.equal('LINK'); - expect(result[5].type).to.equal('SPACE'); - expect(result[6].type).to.equal('PUNCT'); - expect(result[7].type).to.equal('WORD'); - expect(result[7].subType).to.equal('LATIN'); - expect(result[8].type).to.equal('SPACE'); - expect(result[9].type).to.equal('WORD'); - expect(result[9].subType).to.equal('LATIN'); - expect(result[10].type).to.equal('PUNCT'); + expect(result[0].type.toString()).to.equal('LINK'); + expect(result[1].type.toString()).to.equal('PUNCT'); + expect(result[2].type.toString()).to.equal('LINK'); + expect(result[3].type.toString()).to.equal('PUNCT'); + expect(result[4].type.toString()).to.equal('LINK'); + expect(result[5].type.toString()).to.equal('SPACE'); + expect(result[6].type.toString()).to.equal('PUNCT'); + expect(result[7].type.toString()).to.equal('WORD'); + expect(result[7].subType.toString()).to.equal('LATIN'); + expect(result[8].type.toString()).to.equal('SPACE'); + expect(result[9].type.toString()).to.equal('WORD'); + expect(result[9].subType.toString()).to.equal('LATIN'); + expect(result[10].type.toString()).to.equal('PUNCT'); }); - it('should parse hashtags correctly', function () { + it('should parse hashtags correctly', function() { var result = Az.Tokens('#1 #tag # #tag@user').done(); expect(result).to.be.an('array'); expect(result).to.have.length(8); - expect(result[0].type).to.equal('OTHER'); - expect(result[1].type).to.equal('NUMBER'); - expect(result[2].type).to.equal('SPACE'); - expect(result[3].type).to.equal('HASHTAG'); - expect(result[4].type).to.equal('SPACE'); - expect(result[5].type).to.equal('OTHER'); - expect(result[6].type).to.equal('SPACE'); - expect(result[7].type).to.equal('HASHTAG'); + expect(result[0].type.toString()).to.equal('OTHER'); + expect(result[1].type.toString()).to.equal('NUMBER'); + expect(result[2].type.toString()).to.equal('SPACE'); + expect(result[3].type.toString()).to.equal('HASHTAG'); + expect(result[4].type.toString()).to.equal('SPACE'); + expect(result[5].type.toString()).to.equal('OTHER'); + expect(result[6].type.toString()).to.equal('SPACE'); + expect(result[7].type.toString()).to.equal('HASHTAG'); }); -}); \ No newline at end of file + + it('should parse html tags correctly', function() { + var result = Az.Tokens('Мама мыла раму', { + html: true + }).done(); + expect(result).to.be.an('array'); + expect(result).to.have.length(11); + expect(result[0].type.toString()).to.equal('TAG'); + expect(result[1].type.toString()).to.equal('WORD'); + expect(result[2].type.toString()).to.equal('TAG'); + expect(result[2].subType.toString()).to.equal('CLOSING'); + expect(result[3].type.toString()).to.equal('SPACE'); + expect(result[4].type.toString()).to.equal('TAG'); + expect(result[5].type.toString()).to.equal('WORD'); + expect(result[6].type.toString()).to.equal('TAG'); + expect(result[6].subType.toString()).to.equal('CLOSING'); + expect(result[7].type.toString()).to.equal('SPACE'); + expect(result[8].type.toString()).to.equal('TAG'); + expect(result[9].type.toString()).to.equal('WORD'); + expect(result[10].type.toString()).to.equal('TAG'); + expect(result[10].subType.toString()).to.equal('CLOSING'); + }); +});