Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/az.tokens.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
110 changes: 66 additions & 44 deletions test/tokens.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
});
});

it('should parse html tags correctly', function() {
var result = Az.Tokens('<i>Мама</i> <b>мыла</b> <u>раму</u>', {
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');
});
});