2023-11-14 10:00:17 -05:00
|
|
|
import { createMarkdownProcessor, createShikiHighlighter } from '../dist/index.js';
|
2023-10-04 05:23:58 -05:00
|
|
|
import chai from 'chai';
|
|
|
|
|
2023-11-08 09:42:05 -05:00
|
|
|
describe('shiki syntax highlighting', () => {
|
2023-10-04 05:23:58 -05:00
|
|
|
it('does not add is:raw to the output', async () => {
|
2023-11-08 09:42:05 -05:00
|
|
|
const processor = await createMarkdownProcessor();
|
2023-10-04 05:26:21 -05:00
|
|
|
const { code } = await processor.render('```\ntest\n```');
|
2023-10-04 05:23:58 -05:00
|
|
|
|
2023-10-04 05:26:21 -05:00
|
|
|
chai.expect(code).not.to.contain('is:raw');
|
2023-10-04 05:23:58 -05:00
|
|
|
});
|
2023-11-08 09:42:05 -05:00
|
|
|
|
|
|
|
it('supports light/dark themes', async () => {
|
|
|
|
const processor = await createMarkdownProcessor({
|
|
|
|
shikiConfig: {
|
|
|
|
experimentalThemes: {
|
|
|
|
light: 'github-light',
|
|
|
|
dark: 'github-dark',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
|
|
|
const { code } = await processor.render('```\ntest\n```');
|
|
|
|
|
|
|
|
// light theme is there:
|
|
|
|
chai.expect(code).to.contain('background-color:');
|
|
|
|
chai.expect(code).to.contain('github-light');
|
|
|
|
// dark theme is there:
|
|
|
|
chai.expect(code).to.contain('--shiki-dark-bg:');
|
|
|
|
chai.expect(code).to.contain('github-dark');
|
|
|
|
});
|
2023-11-14 10:00:17 -05:00
|
|
|
|
|
|
|
it('createShikiHighlighter works', async () => {
|
|
|
|
const highlighter = await createShikiHighlighter();
|
|
|
|
|
|
|
|
const html = highlighter.highlight('const foo = "bar";', 'js');
|
|
|
|
|
|
|
|
chai.expect(html).to.contain('astro-code github-dark');
|
|
|
|
chai.expect(html).to.contain('background-color:#24292e;color:#e1e4e8;');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('diff +/- text has user-select: none', async () => {
|
|
|
|
const highlighter = await createShikiHighlighter();
|
|
|
|
|
|
|
|
const html = highlighter.highlight(
|
|
|
|
`\
|
|
|
|
- const foo = "bar";
|
|
|
|
+ const foo = "world";`,
|
|
|
|
'diff'
|
|
|
|
);
|
|
|
|
chai.expect(html).to.contain('user-select: none');
|
|
|
|
chai.expect(html).to.contain('>-</span>');
|
|
|
|
chai.expect(html).to.contain('>+</span>');
|
|
|
|
});
|
2023-10-04 05:26:21 -05:00
|
|
|
});
|