'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^^^`); }) });