Skip to content

Commit 72ac11b

Browse files
committed
Use codemirror-maml
1 parent 7dc8809 commit 72ac11b

File tree

3 files changed

+15
-57
lines changed

3 files changed

+15
-57
lines changed

.vitepress/components/Playground.vue

Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ let outputView = null
4242
onMounted(async () => {
4343
const { EditorView, basicSetup } = await import('codemirror')
4444
const { EditorState, Compartment } = await import('@codemirror/state')
45-
const { StreamLanguage } = await import('@codemirror/language')
4645
const { json } = await import('@codemirror/lang-json')
4746
const { oneDark } = await import('@codemirror/theme-one-dark')
47+
const { maml: mamlLanguage } = await import('codemirror-maml')
4848
const maml = await import('maml.js')
4949
5050
const themeCompartment = new Compartment()
@@ -54,59 +54,6 @@ onMounted(async () => {
5454
return isDark.value ? oneDark : EditorView.theme({})
5555
}
5656
57-
const mamlLanguage = StreamLanguage.define({
58-
startState() {
59-
return { inRawString: false }
60-
},
61-
token(stream, state) {
62-
if (state.inRawString) {
63-
if (stream.match('"""')) {
64-
state.inRawString = false
65-
return 'string'
66-
}
67-
stream.skipToEnd()
68-
return 'string'
69-
}
70-
71-
if (stream.eatSpace()) return null
72-
73-
if (stream.eat('#')) {
74-
stream.skipToEnd()
75-
return 'lineComment'
76-
}
77-
78-
if (stream.match('"""')) {
79-
state.inRawString = true
80-
return 'string'
81-
}
82-
83-
if (stream.eat('"')) {
84-
while (!stream.eol()) {
85-
const ch = stream.next()
86-
if (ch === '"') return 'string'
87-
if (ch === '\\') stream.next()
88-
}
89-
return 'string'
90-
}
91-
92-
if (stream.match(/-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?(?=[\s,\]\}]|$)/)) {
93-
return 'number'
94-
}
95-
96-
if (stream.match(/\b(?:true|false|null)\b/)) {
97-
return 'atom'
98-
}
99-
100-
if (stream.match(/[A-Za-z_][A-Za-z0-9_-]*/)) {
101-
return 'variableName'
102-
}
103-
104-
const ch = stream.next()
105-
if ('{}[],:'.includes(ch)) return 'punctuation'
106-
return null
107-
},
108-
})
109-
11057
function parse(doc) {
11158
try {
11259
const result = maml.parse(doc)
@@ -130,7 +77,7 @@ onMounted(async () => {
13077
doc: defaultMAML,
13178
extensions: [
13279
basicSetup,
133-
mamlLanguage,
80+
mamlLanguage(),
13481
themeCompartment.of(getTheme()),
13582
EditorView.updateListener.of((update) => {
13683
if (update.docChanged) {

package-lock.json

Lines changed: 12 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
},
1919
"dependencies": {
2020
"@codemirror/lang-json": "^6.0.2",
21-
"@codemirror/language": "^6.12.2",
2221
"@codemirror/theme-one-dark": "^6.1.3",
2322
"codemirror": "^6.0.2",
23+
"codemirror-maml": "^0.0.1",
2424
"maml.js": "^0.0.4"
2525
}
2626
}

0 commit comments

Comments
 (0)