You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sandkasten-web/src/app/components/languages.ts

52 lines
1.3 KiB

import { LanguageDescription } from '@codemirror/language';
import { javascript } from '@codemirror/lang-javascript';
export const CODE_DEFAULTS = {
C: /** @lang C */ `#include <stdio.h>
int main() {
printf("Hello, World!\\n");
return 0;
}`,
'C++': /** @lang C++ */ `#include <iostream>
int main() {
std::cout << "Hello, World!\\n";
return 0;
}`,
JavaScript: /** @lang JS */ `console.log("Hello, World!");`,
TypeScript: /** @lang TS */ `console.log("Hello, World!");`,
};
export const LANGUAGES = [
LanguageDescription.of({
name: 'C',
extensions: ['c', 'h', 'ino'],
load() {
return import('@codemirror/lang-cpp').then((m) => m.cpp());
},
}),
LanguageDescription.of({
name: 'C++',
alias: ['cpp'],
extensions: ['cpp', 'c++', 'cc', 'cxx', 'hpp', 'h++', 'hh', 'hxx'],
load() {
return import('@codemirror/lang-cpp').then((m) => m.cpp());
},
}),
LanguageDescription.of({
name: 'JavaScript',
alias: ['ecmascript', 'js', 'node'],
extensions: ['js', 'mjs', 'cjs'],
support: javascript(),
}),
LanguageDescription.of({
name: 'TypeScript',
alias: ['ts'],
extensions: ['ts'],
load() {
return import('@codemirror/lang-javascript').then((m) =>
m.javascript({ typescript: true })
);
},
}),
];