mirror of
https://github.com/tenrok/BBob.git
synced 2026-05-15 11:59:37 +03:00
772d422d77
* feat(parser): first iteration of new lexer * feat(parser): convert token string props to number props * refactor(parser): optimize char grabber * refactor(parser): working on new lexer * refactor(parser): convert token string props to number props * refactor(parser): rebuild lexer, add tag attrs parsing * refactor(parser): rework word parsing and tag parsing * refactor(parser): rework to pass tests * refactor(parser): rework tag parsing * refactor(parser): rework escape tags parsing * refactor(parser): rework tests * refactor(parser): all test pass * refactor(parser): make lexer faster by move mode switching in loop * refactor(parser): remove all state map objects * refactor(parser): order of parsing states * refactor(parser): state switching without return * refactor(parser): rename buffers to chars * refactor(lexer): reduce function calls * feat(lexer): add new parser tests and code to pass it * fix(utils): remove unused variable in char grabber * feat(lexer): add test for new lexer bug * chore(*): add lexer and lexer2 to benchmark * chore(lexer): add some debug info for char grabber * feat(parser): add new test for single attributes without values * fix(lexer): paired tags tests * refactor(lexer): comment breaking changes tests for future releases * feat(core): improve tests * refactor(parser): add more tests, reduce char grabber size * refactor(parser): reduce utils size * refactor(parser): remove unused code from tag parsing code * refactor(parser): remove unused code from word to tag transforming code * chore(benchmark): fix benchmark imports
67 lines
1.6 KiB
JavaScript
Vendored
67 lines
1.6 KiB
JavaScript
Vendored
/* eslint-disable global-require */
|
|
const Benchmark = require('benchmark');
|
|
const stub = require('./test/stub');
|
|
|
|
const suite = new Benchmark.Suite();
|
|
|
|
suite
|
|
.add('regex/parser', () => require('./test/RegexParser').parse(stub, {
|
|
ch: {
|
|
closable: true,
|
|
},
|
|
}))
|
|
.add('ya-bbcode', () => {
|
|
const Yabbcode = require('ya-bbcode');
|
|
const parser = new Yabbcode();
|
|
|
|
parser.clearTags();
|
|
parser.registerTag('ch', {
|
|
type: 'replace',
|
|
open: () => '<div>',
|
|
close: () => '</div>',
|
|
});
|
|
|
|
return parser.parse(stub);
|
|
})
|
|
.add('xbbcode/parser', () => {
|
|
const xbbcode = require('xbbcode-parser');
|
|
xbbcode.addTags({
|
|
ch: {
|
|
openTag: () => '<div>',
|
|
closeTag: () => '</div>',
|
|
restrictChildrenTo: [],
|
|
},
|
|
});
|
|
|
|
return xbbcode.process({
|
|
text: stub,
|
|
removeMisalignedTags: false,
|
|
addInLineBreaks: false,
|
|
});
|
|
})
|
|
.add('@bbob/parser lexer old', () => {
|
|
const lexer1 = require('../packages/bbob-parser/lib/lexer_old');
|
|
|
|
return require('../packages/bbob-parser/lib/index').parse(stub, {
|
|
onlyAllowTags: ['ch'],
|
|
createTokenizer: lexer1.createLexer,
|
|
});
|
|
})
|
|
.add('@bbob/parser lexer', () => {
|
|
const lexer2 = require('../packages/bbob-parser/lib/lexer');
|
|
|
|
return require('../packages/bbob-parser/lib/index').parse(stub, {
|
|
onlyAllowTags: ['ch'],
|
|
createTokenizer: lexer2.createLexer,
|
|
});
|
|
})
|
|
// add listeners
|
|
.on('cycle', (event) => {
|
|
console.log(String(event.target));
|
|
})
|
|
.on('complete', function onComplete() {
|
|
console.log(`Fastest is ${this.filter('fastest').map('name')}`);
|
|
})
|
|
// run async
|
|
.run({ async: false });
|