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
92 lines
3.0 KiB
JavaScript
92 lines
3.0 KiB
JavaScript
import { createCharGrabber } from '../src/utils';
|
|
|
|
|
|
describe('utils', () => {
|
|
describe('createCharGrabber', () => {
|
|
|
|
test('#substrUntilChar ] 1', () => {
|
|
/**
|
|
|
|
}
|
|
*/
|
|
const bufferGrabber = createCharGrabber('[h1 name=value]Foo [Bar] [/h1]');
|
|
const substr = bufferGrabber.substrUntilChar(']');
|
|
|
|
expect(substr).toBe('[h1 name=value');
|
|
});
|
|
|
|
test('#substrUntilChar ] 2', () => {
|
|
/**
|
|
console.log src/utils.js:95
|
|
substrUntilChar { char: ']', indexOfChar: 63, curPos: 0 } {
|
|
result: '[url href=https://ru.wikipedia.org target=_blank text="Foo Bar"',
|
|
source: '[url href=https://ru.wikipedia.org target=_blank text="Foo Bar"]Text[/url]'
|
|
}
|
|
console.log src/utils.js:104
|
|
substrUntilChar.new { char: ']', indexOfCharNew: 63, curPos: 0 } {
|
|
result: '[url href=https://ru.wikipedia.org target=_blank text="Foo Bar"]',
|
|
source: '[url href=https://ru.wikipedia.org target=_blank text="Foo Bar"]Text[/url]'
|
|
}
|
|
*/
|
|
const bufferGrabber = createCharGrabber('[url href=https://ru.wikipedia.org target=_blank text="Foo Bar"]Text[/url]');
|
|
const substr = bufferGrabber.substrUntilChar(']');
|
|
|
|
expect(substr).toBe('[url href=https://ru.wikipedia.org target=_blank text="Foo Bar"');
|
|
});
|
|
|
|
test('#substrUntilChar ] 3', () => {
|
|
/**
|
|
console.log src/utils.js:95
|
|
substrUntilChar { char: ']', indexOfChar: 14, curPos: 7 } {
|
|
result: 'blah foo="bar"',
|
|
source: 'hello [blah foo="bar"]world[/blah]'
|
|
}
|
|
console.log src/utils.js:104
|
|
substrUntilChar.new { char: ']', indexOfCharNew: 21, curPos: 7 } {
|
|
result: 'blah foo="bar"]world[/',
|
|
source: 'hello [blah foo="bar"]world[/blah]'
|
|
}
|
|
*/
|
|
const bufferGrabber = createCharGrabber('hello [blah foo="bar"]world[/blah]');
|
|
const substr = bufferGrabber.substrUntilChar('[');
|
|
|
|
expect(substr).toBe('hello ');
|
|
});
|
|
|
|
test('#substrUntilChar not existed', () => {
|
|
/**
|
|
console.log src/utils.js:95
|
|
substrUntilChar { char: ']', indexOfChar: 14, curPos: 7 } {
|
|
result: 'blah foo="bar"',
|
|
source: 'hello [blah foo="bar"]world[/blah]'
|
|
}
|
|
console.log src/utils.js:104
|
|
substrUntilChar.new { char: ']', indexOfCharNew: 21, curPos: 7 } {
|
|
result: 'blah foo="bar"]world[/',
|
|
source: 'hello [blah foo="bar"]world[/blah]'
|
|
}
|
|
*/
|
|
const bufferGrabber = createCharGrabber('hello');
|
|
const substr = bufferGrabber.substrUntilChar('[');
|
|
|
|
expect(substr).toBe('');
|
|
});
|
|
|
|
test('getPrev is null', () => {
|
|
const bufferGrabber = createCharGrabber('');
|
|
const prev = bufferGrabber.getPrev();
|
|
|
|
expect(prev).toBe(null);
|
|
});
|
|
|
|
test('getRest', () => {
|
|
const bufferGrabber = createCharGrabber('hello [blah foo="bar"]world[/blah]');
|
|
bufferGrabber.skip();
|
|
const rest = bufferGrabber.getRest();
|
|
|
|
expect(rest).toBe('ello [blah foo="bar"]world[/blah]');
|
|
});
|
|
|
|
})
|
|
});
|