|
1 | 1 | <script setup lang="ts"> |
2 | 2 | import { ref, watch, onMounted, nextTick } from 'vue' |
3 | 3 | import hljs from 'highlight.js' |
| 4 | +import hljsDjot from '../hljs-djot' |
4 | 5 |
|
5 | 6 | // Register Djot language for syntax highlighting |
6 | | -function registerDjotLanguage() { |
7 | | - if (hljs.getLanguage('djot')) return |
8 | | -
|
9 | | - hljs.registerLanguage('djot', () => ({ |
10 | | - name: 'Djot', |
11 | | - aliases: ['djot'], |
12 | | - case_insensitive: false, |
13 | | - contains: [ |
14 | | - { className: 'section', begin: /^#{1,6}\s/, end: /$/ }, |
15 | | - { className: 'emphasis', begin: /(?<!\w)_(?!\s)/, end: /_(?!\w)/ }, |
16 | | - { className: 'strong', begin: /(?<!\w)\*(?!\s)/, end: /\*(?!\w)/ }, |
17 | | - { className: 'code', begin: /`+/, end: /`+/ }, |
18 | | - { className: 'link', begin: /\[[^\]]*\]\([^)]*\)/ }, |
19 | | - { className: 'quote', begin: /^>/, end: /$/ }, |
20 | | - { className: 'bullet', begin: /^[ \t]*[-*+](?=\s)/ }, |
21 | | - { className: 'bullet', begin: /^[ \t]*\d+[.)](?=\s)/ }, |
22 | | - { className: 'keyword', begin: /^`{3,}\s*[a-zA-Z]*$/ }, |
23 | | - { className: 'attr', begin: /\{(?![=+\-%])[^}]+\}/ }, |
24 | | - { className: 'addition', begin: /\{=/, end: /=\}/ }, |
25 | | - { className: 'addition', begin: /\{\+/, end: /\+\}/ }, |
26 | | - { className: 'deletion', begin: /\{-/, end: /-\}/ }, |
27 | | - ], |
28 | | - })) |
| 7 | +if (!hljs.getLanguage('djot')) { |
| 8 | + hljs.registerLanguage('djot', hljsDjot) |
29 | 9 | } |
30 | 10 |
|
31 | | -registerDjotLanguage() |
32 | | -
|
33 | 11 | const SANDBOX_URL = 'https://sandbox.dereuromark.de/sandbox/djot' |
34 | 12 |
|
35 | 13 | const djotInput = ref(`# Welcome to Djot |
|
0 commit comments