'use strict';
const hljs = require('../../build');
hljs.debugMode();
describe('multi-class matchers', () => {
before(() => {
const grammar = function() {
return {
contains: [
{
begin: ["a", "b", "c"],
className: {
1: "a",
3: "c"
},
contains: [
{
match: "def",
className: "def"
}
]
},
{
className: "carrot",
begin: /\^\^\^/,
end: /\^\^\^/,
contains: [
{
begin: ["a", "b", "c"],
className: {
1: "a",
3: "c"
}
}
]
},
{
match: [
/((func))/,
/\(\)/,
/{.*}/
],
className: {
1: "keyword",
2: "params",
3: "body"
}
}
]
};
};
hljs.registerLanguage("test", grammar);
});
after(() => {
hljs.unregisterLanguage("test");
});
it('should support begin', () => {
const code = "abcdef";
const result = hljs.highlight(code, { language: 'test' });
result.value.should.equal(`abcdef`);
result.relevance.should.equal(2);
});
it('basic functionality', () => {
const code = "func(){ test }";
const result = hljs.highlight(code, { language: 'test' });
result.value.should.equal(`func(){ test }`);
result.relevance.should.equal(1);
});
it('works inside a classified parent mode', () => {
const code = "^^^what abc now^^^";
const result = hljs.highlight(code, { language: 'test' });
result.value.should.equal(
`^^^what ` +
`abc` +
` now^^^`);
})
});