const hljs = require('../../build');
describe("parser/should not destroy data", function () {
describe("a grammar with a mode that makes a 0 width match", () => {
it("should instead count it as a 1 character match", () => {
hljs.safeMode();
hljs.registerLanguage('test-language', (hljs) => {
const NUMBER = {
className: "number",
begin: '(?=\\b|\\+|-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?',
}
return {
contains: [NUMBER]
};
});
hljs.highlight('The number is 123_longint yes.', {language: 'test-language' }).value
.should.equal(
'The number is <span class="hljs-number">1</span>23_longint yes.'
);
hljs.debugMode();
should(() => {
hljs.highlight('The number is 123_longint yes.', {language: 'test-language'}).value
}).throw(Error, {
message: /0 width match regex/,
languageName: "test-language"})
})
})
})