Add aliases, redirect to lowercase
This commit is contained in:
parent
75232829d6
commit
0dbb561063
|
@ -1,6 +1,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
export interface LangConfig {
|
export interface LangConfig {
|
||||||
|
aliases?: string[];
|
||||||
name: string;
|
name: string;
|
||||||
monacoLang: string;
|
monacoLang: string;
|
||||||
repl?: string;
|
repl?: string;
|
||||||
|
@ -15,6 +16,7 @@ export interface LangConfig {
|
||||||
|
|
||||||
export const langs: { [key: string]: LangConfig } = {
|
export const langs: { [key: string]: LangConfig } = {
|
||||||
ada: {
|
ada: {
|
||||||
|
aliases: ["adb"],
|
||||||
name: "Ada",
|
name: "Ada",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.adb",
|
main: "main.adb",
|
||||||
|
@ -29,6 +31,7 @@ end Main;
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
algol: {
|
algol: {
|
||||||
|
aliases: ["alg"],
|
||||||
name: "ALGOL 68",
|
name: "ALGOL 68",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.alg",
|
main: "main.alg",
|
||||||
|
@ -59,6 +62,7 @@ message:
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
ats: {
|
ats: {
|
||||||
|
aliases: ["dats"],
|
||||||
name: "ATS",
|
name: "ATS",
|
||||||
monacoLang: "postiats",
|
monacoLang: "postiats",
|
||||||
main: "main.dats",
|
main: "main.dats",
|
||||||
|
@ -69,6 +73,7 @@ implement main0 () = ()
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
bash: {
|
bash: {
|
||||||
|
aliases: ["bashrc", "bourneshell"],
|
||||||
name: "Bash",
|
name: "Bash",
|
||||||
monacoLang: "shell",
|
monacoLang: "shell",
|
||||||
repl: "bash --rcfile /dev/null",
|
repl: "bash --rcfile /dev/null",
|
||||||
|
@ -78,6 +83,7 @@ implement main0 () = ()
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
basic: {
|
basic: {
|
||||||
|
aliases: ["bas", "qbasic"],
|
||||||
name: "BASIC",
|
name: "BASIC",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "bwbasic",
|
repl: "bwbasic",
|
||||||
|
@ -87,6 +93,7 @@ implement main0 () = ()
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
befunge: {
|
befunge: {
|
||||||
|
aliases: ["be"],
|
||||||
name: "Befunge",
|
name: "Befunge",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.be",
|
main: "main.be",
|
||||||
|
@ -95,6 +102,7 @@ implement main0 () = ()
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
brainf: {
|
brainf: {
|
||||||
|
aliases: ["brainfuck", "bf"],
|
||||||
name: "Brainf***",
|
name: "Brainf***",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "brainf-repl",
|
repl: "brainf-repl",
|
||||||
|
@ -131,6 +139,7 @@ implement main0 () = ()
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
c: {
|
c: {
|
||||||
|
aliases: ["gcc", "llvm", "clang", "h", "cc", "c99", "c11", "c18"],
|
||||||
name: "C",
|
name: "C",
|
||||||
monacoLang: "c",
|
monacoLang: "c",
|
||||||
main: "main.c",
|
main: "main.c",
|
||||||
|
@ -145,6 +154,7 @@ int main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
cmd: {
|
cmd: {
|
||||||
|
aliases: ["bat", "batch", "wine"],
|
||||||
name: "Cmd",
|
name: "Cmd",
|
||||||
monacoLang: "bat",
|
monacoLang: "bat",
|
||||||
repl: "wine cmd",
|
repl: "wine cmd",
|
||||||
|
@ -154,6 +164,7 @@ int main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
commonlisp: {
|
commonlisp: {
|
||||||
|
aliases: ["lisp", "sbcl"],
|
||||||
name: "Common Lisp",
|
name: "Common Lisp",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "rlwrap sbcl",
|
repl: "rlwrap sbcl",
|
||||||
|
@ -163,6 +174,26 @@ int main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
cpp: {
|
cpp: {
|
||||||
|
aliases: [
|
||||||
|
"c++",
|
||||||
|
"g++",
|
||||||
|
"clang++",
|
||||||
|
"c++98",
|
||||||
|
"c++03",
|
||||||
|
"c++11",
|
||||||
|
"c++14",
|
||||||
|
"c++17",
|
||||||
|
"c++20",
|
||||||
|
"cpp98",
|
||||||
|
"cpp03",
|
||||||
|
"cpp11",
|
||||||
|
"cpp14",
|
||||||
|
"cpp17",
|
||||||
|
"cpp20",
|
||||||
|
"hpp",
|
||||||
|
"cxx",
|
||||||
|
"hxx",
|
||||||
|
],
|
||||||
name: "C++",
|
name: "C++",
|
||||||
monacoLang: "cpp",
|
monacoLang: "cpp",
|
||||||
main: "main.cpp",
|
main: "main.cpp",
|
||||||
|
@ -177,6 +208,7 @@ int main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
crystal: {
|
crystal: {
|
||||||
|
aliases: ["cr"],
|
||||||
name: "Crystal",
|
name: "Crystal",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.cr",
|
main: "main.cr",
|
||||||
|
@ -185,6 +217,7 @@ int main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
csharp: {
|
csharp: {
|
||||||
|
aliases: ["cs", "mcs"],
|
||||||
name: "C#",
|
name: "C#",
|
||||||
monacoLang: "csharp",
|
monacoLang: "csharp",
|
||||||
main: "main.cs",
|
main: "main.cs",
|
||||||
|
@ -198,6 +231,7 @@ int main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
clojure: {
|
clojure: {
|
||||||
|
aliases: ["clj"],
|
||||||
name: "Clojure",
|
name: "Clojure",
|
||||||
monacoLang: "clojure",
|
monacoLang: "clojure",
|
||||||
repl: "clojure",
|
repl: "clojure",
|
||||||
|
@ -207,6 +241,7 @@ int main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
clojurescript: {
|
clojurescript: {
|
||||||
|
aliases: ["cljs", "lumo"],
|
||||||
name: "ClojureScript",
|
name: "ClojureScript",
|
||||||
monacoLang: "clojure",
|
monacoLang: "clojure",
|
||||||
repl: "lumo -r",
|
repl: "lumo -r",
|
||||||
|
@ -216,6 +251,7 @@ int main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
cobol: {
|
cobol: {
|
||||||
|
aliases: ["cbl", "cobc"],
|
||||||
name: "COBOL",
|
name: "COBOL",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.cbl",
|
main: "main.cbl",
|
||||||
|
@ -229,6 +265,7 @@ PROCEDURE DIVISION.
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
coffeescript: {
|
coffeescript: {
|
||||||
|
aliases: ["coffee"],
|
||||||
name: "CoffeeScript",
|
name: "CoffeeScript",
|
||||||
monacoLang: "coffee",
|
monacoLang: "coffee",
|
||||||
repl: "coffee",
|
repl: "coffee",
|
||||||
|
@ -242,6 +279,7 @@ require("/usr/lib/node_modules/coffeescript/repl").start()
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
d: {
|
d: {
|
||||||
|
aliases: ["dmd"],
|
||||||
name: "D",
|
name: "D",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.d",
|
main: "main.d",
|
||||||
|
@ -265,6 +303,7 @@ void main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
elixir: {
|
elixir: {
|
||||||
|
aliases: ["iex", "exs"],
|
||||||
name: "Elixir",
|
name: "Elixir",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "iex",
|
repl: "iex",
|
||||||
|
@ -286,6 +325,7 @@ output = "Hello, world!"
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
elvish: {
|
elvish: {
|
||||||
|
aliases: ["elv"],
|
||||||
name: "Elvish",
|
name: "Elvish",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "SHELL=/usr/bin/elvish HOME=. elvish",
|
repl: "SHELL=/usr/bin/elvish HOME=. elvish",
|
||||||
|
@ -295,6 +335,7 @@ output = "Hello, world!"
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
emacs: {
|
emacs: {
|
||||||
|
aliases: ["emacslisp", "elisp", "gnuemacs", "xemacs", "ielm"],
|
||||||
name: "Emacs Lisp",
|
name: "Emacs Lisp",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "emacs --eval '(ielm)'",
|
repl: "emacs --eval '(ielm)'",
|
||||||
|
@ -304,6 +345,7 @@ output = "Hello, world!"
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
erlang: {
|
erlang: {
|
||||||
|
aliases: ["erl"],
|
||||||
name: "Erlang",
|
name: "Erlang",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "erl",
|
repl: "erl",
|
||||||
|
@ -327,6 +369,7 @@ main() ->
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
forth: {
|
forth: {
|
||||||
|
aliases: ["fs", "gforth"],
|
||||||
name: "Forth",
|
name: "Forth",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "gforth",
|
repl: "gforth",
|
||||||
|
@ -336,6 +379,15 @@ main() ->
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
fortran: {
|
fortran: {
|
||||||
|
aliases: [
|
||||||
|
"f",
|
||||||
|
"flang",
|
||||||
|
"fortran77",
|
||||||
|
"fortran90",
|
||||||
|
"fortran95",
|
||||||
|
"fortran2003",
|
||||||
|
"fortran2008",
|
||||||
|
],
|
||||||
name: "FORTRAN",
|
name: "FORTRAN",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.f",
|
main: "main.f",
|
||||||
|
@ -347,6 +399,7 @@ main() ->
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
fsharp: {
|
fsharp: {
|
||||||
|
aliases: ["fsharpi", "fsx", "fs"],
|
||||||
name: "F#",
|
name: "F#",
|
||||||
monacoLang: "fsharp",
|
monacoLang: "fsharp",
|
||||||
repl: "fsharpi",
|
repl: "fsharpi",
|
||||||
|
@ -356,6 +409,7 @@ main() ->
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
go: {
|
go: {
|
||||||
|
aliases: ["golang"],
|
||||||
name: "Go",
|
name: "Go",
|
||||||
monacoLang: "go",
|
monacoLang: "go",
|
||||||
main: "main.go",
|
main: "main.go",
|
||||||
|
@ -380,6 +434,7 @@ func main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
haskell: {
|
haskell: {
|
||||||
|
aliases: ["ghc", "ghci", "hs"],
|
||||||
name: "Haskell",
|
name: "Haskell",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "ghci",
|
repl: "ghci",
|
||||||
|
@ -407,6 +462,7 @@ log('Hello, world!')
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
intercal: {
|
intercal: {
|
||||||
|
aliases: ["i", "ick"],
|
||||||
name: "INTERCAL",
|
name: "INTERCAL",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.i",
|
main: "main.i",
|
||||||
|
@ -432,6 +488,7 @@ PLEASE GIVE UP
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
java: {
|
java: {
|
||||||
|
aliases: ["javac"],
|
||||||
name: "Java",
|
name: "Java",
|
||||||
monacoLang: "java",
|
monacoLang: "java",
|
||||||
main: "Main.java",
|
main: "Main.java",
|
||||||
|
@ -445,6 +502,7 @@ PLEASE GIVE UP
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
julia: {
|
julia: {
|
||||||
|
aliases: ["jl"],
|
||||||
name: "Julia",
|
name: "Julia",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "julia",
|
repl: "julia",
|
||||||
|
@ -466,6 +524,7 @@ PLEASE GIVE UP
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
kotlin: {
|
kotlin: {
|
||||||
|
aliases: ["kts", "kotlinc"],
|
||||||
name: "Kotlin",
|
name: "Kotlin",
|
||||||
monacoLang: "kotlin",
|
monacoLang: "kotlin",
|
||||||
repl: "kotlinc",
|
repl: "kotlinc",
|
||||||
|
@ -475,6 +534,7 @@ PLEASE GIVE UP
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
ksh: {
|
ksh: {
|
||||||
|
aliases: ["kshell"],
|
||||||
name: "Ksh",
|
name: "Ksh",
|
||||||
monacoLang: "shell",
|
monacoLang: "shell",
|
||||||
repl: "SHELL=/usr/bin/ksh HOME=. ksh",
|
repl: "SHELL=/usr/bin/ksh HOME=. ksh",
|
||||||
|
@ -484,6 +544,7 @@ PLEASE GIVE UP
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
lolcode: {
|
lolcode: {
|
||||||
|
aliases: ["lol", "lci"],
|
||||||
name: "LOLCODE",
|
name: "LOLCODE",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.lol",
|
main: "main.lol",
|
||||||
|
@ -503,6 +564,7 @@ KTHXBYE
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
malbolge: {
|
malbolge: {
|
||||||
|
aliases: ["mb"],
|
||||||
name: "Malbolge",
|
name: "Malbolge",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.mb",
|
main: "main.mb",
|
||||||
|
@ -511,6 +573,7 @@ KTHXBYE
|
||||||
" (=<`#9]~6ZY32Vx/4Rs+0No-&Jk)\"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc\n",
|
" (=<`#9]~6ZY32Vx/4Rs+0No-&Jk)\"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc\n",
|
||||||
},
|
},
|
||||||
mips: {
|
mips: {
|
||||||
|
aliases: ["mips64"],
|
||||||
name: "MIPS",
|
name: "MIPS",
|
||||||
monacoLang: "mips",
|
monacoLang: "mips",
|
||||||
main: "main.S",
|
main: "main.S",
|
||||||
|
@ -533,6 +596,7 @@ message:
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
mumps: {
|
mumps: {
|
||||||
|
aliases: ["mlang", "gtm", "fisgtm"],
|
||||||
name: "MUMPS",
|
name: "MUMPS",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.m",
|
main: "main.m",
|
||||||
|
@ -553,6 +617,7 @@ message:
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
nodejs: {
|
nodejs: {
|
||||||
|
aliases: ["node", "js", "javascript", "web", "jsx", "v8", "closure"],
|
||||||
name: "Node.js",
|
name: "Node.js",
|
||||||
monacoLang: "javascript",
|
monacoLang: "javascript",
|
||||||
repl: "node",
|
repl: "node",
|
||||||
|
@ -565,6 +630,7 @@ require("repl").start()
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
objectivec: {
|
objectivec: {
|
||||||
|
aliases: ["objc", "gnustep"],
|
||||||
name: "Objective-C",
|
name: "Objective-C",
|
||||||
monacoLang: "objective-c",
|
monacoLang: "objective-c",
|
||||||
main: "main.m",
|
main: "main.m",
|
||||||
|
@ -582,6 +648,7 @@ int main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
octave: {
|
octave: {
|
||||||
|
aliases: ["matlab", "m", "mathworks"],
|
||||||
name: "Octave",
|
name: "Octave",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "octave",
|
repl: "octave",
|
||||||
|
@ -591,6 +658,7 @@ int main() {
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
pascal: {
|
pascal: {
|
||||||
|
aliases: ["pas", "fpc"],
|
||||||
name: "Pascal",
|
name: "Pascal",
|
||||||
monacoLang: "pascal",
|
monacoLang: "pascal",
|
||||||
main: "main.pas",
|
main: "main.pas",
|
||||||
|
@ -603,6 +671,7 @@ end.
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
perl: {
|
perl: {
|
||||||
|
aliases: ["pl", "repl"],
|
||||||
name: "Perl",
|
name: "Perl",
|
||||||
monacoLang: "perl",
|
monacoLang: "perl",
|
||||||
repl: "re.pl",
|
repl: "re.pl",
|
||||||
|
@ -612,6 +681,7 @@ end.
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
php: {
|
php: {
|
||||||
|
aliases: ["phpcli"],
|
||||||
name: "PHP",
|
name: "PHP",
|
||||||
monacoLang: "php",
|
monacoLang: "php",
|
||||||
repl: "php -a",
|
repl: "php -a",
|
||||||
|
@ -623,6 +693,7 @@ echo "Hello, world!\\n";
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
powershell: {
|
powershell: {
|
||||||
|
aliases: ["pwsh", "ps1"],
|
||||||
name: "PowerShell",
|
name: "PowerShell",
|
||||||
monacoLang: "powershell",
|
monacoLang: "powershell",
|
||||||
repl: "SHELL=/usr/bin/pwsh pwsh",
|
repl: "SHELL=/usr/bin/pwsh pwsh",
|
||||||
|
@ -644,6 +715,7 @@ main :-
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
python: {
|
python: {
|
||||||
|
aliases: ["python3", "python2", "py"],
|
||||||
name: "Python",
|
name: "Python",
|
||||||
monacoLang: "python",
|
monacoLang: "python",
|
||||||
repl: "python3 -u",
|
repl: "python3 -u",
|
||||||
|
@ -653,6 +725,7 @@ main :-
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
r: {
|
r: {
|
||||||
|
aliases: ["rlang"],
|
||||||
name: "R",
|
name: "R",
|
||||||
monacoLang: "r",
|
monacoLang: "r",
|
||||||
repl: "R",
|
repl: "R",
|
||||||
|
@ -662,6 +735,7 @@ main :-
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
racket: {
|
racket: {
|
||||||
|
aliases: ["rkt"],
|
||||||
name: "Racket",
|
name: "Racket",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "racket",
|
repl: "racket",
|
||||||
|
@ -672,6 +746,7 @@ main :-
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
reasonml: {
|
reasonml: {
|
||||||
|
aliases: ["re", "reason", "bsc", "buckle", "bucklescript"],
|
||||||
name: "ReasonML",
|
name: "ReasonML",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.re",
|
main: "main.re",
|
||||||
|
@ -681,6 +756,7 @@ main :-
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
riscv: {
|
riscv: {
|
||||||
|
aliases: ["risc"],
|
||||||
name: "RISC-V",
|
name: "RISC-V",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.S",
|
main: "main.S",
|
||||||
|
@ -703,6 +779,7 @@ message:
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
ruby: {
|
ruby: {
|
||||||
|
aliases: ["irb", "rb"],
|
||||||
name: "Ruby",
|
name: "Ruby",
|
||||||
monacoLang: "ruby",
|
monacoLang: "ruby",
|
||||||
repl: "irb",
|
repl: "irb",
|
||||||
|
@ -719,6 +796,7 @@ binding_irb.run(IRB.conf)
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
rust: {
|
rust: {
|
||||||
|
aliases: ["rs", "rustc"],
|
||||||
name: "Rust",
|
name: "Rust",
|
||||||
monacoLang: "rust",
|
monacoLang: "rust",
|
||||||
main: "main.rs",
|
main: "main.rs",
|
||||||
|
@ -739,6 +817,7 @@ binding_irb.run(IRB.conf)
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
scheme: {
|
scheme: {
|
||||||
|
aliases: ["scm", "mitscheme"],
|
||||||
name: "Scheme",
|
name: "Scheme",
|
||||||
monacoLang: "scheme",
|
monacoLang: "scheme",
|
||||||
repl: "mit-scheme",
|
repl: "mit-scheme",
|
||||||
|
@ -750,6 +829,7 @@ binding_irb.run(IRB.conf)
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
sh: {
|
sh: {
|
||||||
|
aliases: ["shell", "posix", "posixsh", "ash", "dash", "posh"],
|
||||||
name: "Sh",
|
name: "Sh",
|
||||||
monacoLang: "shell",
|
monacoLang: "shell",
|
||||||
repl: "SHELL=/usr/bin/sh HOME=. posh -l",
|
repl: "SHELL=/usr/bin/sh HOME=. posh -l",
|
||||||
|
@ -759,6 +839,7 @@ binding_irb.run(IRB.conf)
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
shakespeare: {
|
shakespeare: {
|
||||||
|
aliases: ["spl"],
|
||||||
name: "Shakespeare",
|
name: "Shakespeare",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "shakespeare console",
|
repl: "shakespeare console",
|
||||||
|
@ -857,6 +938,7 @@ Ophelia:
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
smalltalk: {
|
smalltalk: {
|
||||||
|
aliases: ["gst", "st"],
|
||||||
name: "Smalltalk",
|
name: "Smalltalk",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "gst",
|
repl: "gst",
|
||||||
|
@ -866,6 +948,7 @@ Ophelia:
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
snobol: {
|
snobol: {
|
||||||
|
aliases: ["snobol4", "spitbol", "sno"],
|
||||||
name: "SNOBOL",
|
name: "SNOBOL",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "snobol4",
|
repl: "snobol4",
|
||||||
|
@ -876,6 +959,7 @@ END
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
sqlite: {
|
sqlite: {
|
||||||
|
aliases: ["sql", "db", "sqlite3"],
|
||||||
name: "SQLite",
|
name: "SQLite",
|
||||||
monacoLang: "sql",
|
monacoLang: "sql",
|
||||||
repl: "sqlite3",
|
repl: "sqlite3",
|
||||||
|
@ -885,6 +969,7 @@ END
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
standardml: {
|
standardml: {
|
||||||
|
aliases: ["sml", "ml"],
|
||||||
name: "Standard ML",
|
name: "Standard ML",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "rlwrap sml",
|
repl: "rlwrap sml",
|
||||||
|
@ -894,6 +979,7 @@ END
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
swift: {
|
swift: {
|
||||||
|
aliases: ["swiftc"],
|
||||||
name: "Swift",
|
name: "Swift",
|
||||||
monacoLang: "swift",
|
monacoLang: "swift",
|
||||||
main: "main.swift",
|
main: "main.swift",
|
||||||
|
@ -903,6 +989,7 @@ END
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
tcl: {
|
tcl: {
|
||||||
|
aliases: ["tclsh", "tclshrc"],
|
||||||
name: "Tcl",
|
name: "Tcl",
|
||||||
monacoLang: "tcl",
|
monacoLang: "tcl",
|
||||||
repl: "tclsh",
|
repl: "tclsh",
|
||||||
|
@ -912,6 +999,7 @@ END
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
tcsh: {
|
tcsh: {
|
||||||
|
aliases: ["tcshell", "tcshrc"],
|
||||||
name: "Tcsh",
|
name: "Tcsh",
|
||||||
monacoLang: "shell",
|
monacoLang: "shell",
|
||||||
repl: "SHELL=/usr/bin/tcsh HOME=. tcsh",
|
repl: "SHELL=/usr/bin/tcsh HOME=. tcsh",
|
||||||
|
@ -921,6 +1009,7 @@ END
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
typescript: {
|
typescript: {
|
||||||
|
aliases: ["ts", "tsnode", "tsc"],
|
||||||
name: "TypeScript",
|
name: "TypeScript",
|
||||||
monacoLang: "typescript",
|
monacoLang: "typescript",
|
||||||
repl: "ts-node",
|
repl: "ts-node",
|
||||||
|
@ -930,6 +1019,7 @@ END
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
unlambda: {
|
unlambda: {
|
||||||
|
aliases: ["unl"],
|
||||||
name: "Unlambda",
|
name: "Unlambda",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "unlambda-repl",
|
repl: "unlambda-repl",
|
||||||
|
@ -938,6 +1028,7 @@ END
|
||||||
template: "`.\n`.!`.d`.l`.r`.o`.w`. `.,`.o`.l`.l`.e`.Hi\n",
|
template: "`.\n`.!`.d`.l`.r`.o`.w`. `.,`.o`.l`.l`.e`.Hi\n",
|
||||||
},
|
},
|
||||||
vim: {
|
vim: {
|
||||||
|
aliases: ["viml", "vimscript"],
|
||||||
name: "Vimscript",
|
name: "Vimscript",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "vim",
|
repl: "vim",
|
||||||
|
@ -947,6 +1038,7 @@ END
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
visualbasic: {
|
visualbasic: {
|
||||||
|
aliases: ["vbasic", "vb", "vbnc"],
|
||||||
name: "Visual Basic",
|
name: "Visual Basic",
|
||||||
monacoLang: "vb",
|
monacoLang: "vb",
|
||||||
main: "main.vb",
|
main: "main.vb",
|
||||||
|
@ -960,6 +1052,7 @@ End Module
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
whitespace: {
|
whitespace: {
|
||||||
|
aliases: ["ws"],
|
||||||
name: "Whitespace",
|
name: "Whitespace",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.ws",
|
main: "main.ws",
|
||||||
|
@ -967,6 +1060,15 @@ End Module
|
||||||
template: `Hello, world! \t \t \n\t\n \t\t \t \t\n\t\n \t\t \t\t \n\t\n \t\t \t\t \n\t\n \t\t \t\t\t\t\n\t\n \t \t\t \n\t\n \t \n\t\n \t\t\t \t\t\t\n\t\n \t\t \t\t\t\t\n\t\n \t\t\t \t \n\t\n \t\t \t\t \n\t\n \t\t \t \n\t\n \n\n\n`,
|
template: `Hello, world! \t \t \n\t\n \t\t \t \t\n\t\n \t\t \t\t \n\t\n \t\t \t\t \n\t\n \t\t \t\t\t\t\n\t\n \t \t\t \n\t\n \t \n\t\n \t\t\t \t\t\t\n\t\n \t\t \t\t\t\t\n\t\n \t\t\t \t \n\t\n \t\t \t\t \n\t\n \t\t \t \n\t\n \n\n\n`,
|
||||||
},
|
},
|
||||||
wolframlanguage: {
|
wolframlanguage: {
|
||||||
|
aliases: [
|
||||||
|
"wolfram",
|
||||||
|
"mathematica",
|
||||||
|
"mathics",
|
||||||
|
"wolframmathematica",
|
||||||
|
"wls",
|
||||||
|
"expreduce",
|
||||||
|
"symja",
|
||||||
|
],
|
||||||
name: "Wolfram Language",
|
name: "Wolfram Language",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
repl: "mathics",
|
repl: "mathics",
|
||||||
|
@ -976,6 +1078,7 @@ End Module
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
x86: {
|
x86: {
|
||||||
|
aliases: ["s", "asm", "assembly", "x86-64"],
|
||||||
name: "x86",
|
name: "x86",
|
||||||
monacoLang: "plaintext",
|
monacoLang: "plaintext",
|
||||||
main: "main.S",
|
main: "main.S",
|
||||||
|
@ -998,6 +1101,7 @@ message:
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
zsh: {
|
zsh: {
|
||||||
|
aliases: ["zshell", "zshrc"],
|
||||||
name: "Zsh",
|
name: "Zsh",
|
||||||
monacoLang: "shell",
|
monacoLang: "shell",
|
||||||
repl: "SHELL=/usr/bin/zsh zsh",
|
repl: "SHELL=/usr/bin/zsh zsh",
|
||||||
|
|
|
@ -7,6 +7,7 @@ import * as appRoot from "app-root-path";
|
||||||
import * as express from "express";
|
import * as express from "express";
|
||||||
import { Request } from "express";
|
import { Request } from "express";
|
||||||
import * as ws from "express-ws";
|
import * as ws from "express-ws";
|
||||||
|
import * as _ from "lodash";
|
||||||
|
|
||||||
import * as api from "./api";
|
import * as api from "./api";
|
||||||
import { langs } from "./langs";
|
import { langs } from "./langs";
|
||||||
|
@ -30,13 +31,26 @@ function getQueryParams(req: Request): URLSearchParams {
|
||||||
app.get("/", (_, res) => {
|
app.get("/", (_, res) => {
|
||||||
res.render(appRoot.path + "/frontend/pages/index", { langs });
|
res.render(appRoot.path + "/frontend/pages/index", { langs });
|
||||||
});
|
});
|
||||||
|
for (const [lang, { aliases }] of Object.entries(langs)) {
|
||||||
|
if (aliases) {
|
||||||
|
for (const alias of aliases) {
|
||||||
|
app.get(`/${_.escapeRegExp(alias)}`, (_, res) => {
|
||||||
|
res.redirect(301, `/${lang}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
app.get("/:lang", (req, res) => {
|
app.get("/:lang", (req, res) => {
|
||||||
if (langs[req.params.lang]) {
|
const lang = req.params.lang;
|
||||||
|
const lowered = lang.toLowerCase();
|
||||||
|
if (lowered !== lang) {
|
||||||
|
res.redirect(301, `/${lowered}`);
|
||||||
|
} else if (langs[lang]) {
|
||||||
res.render(appRoot.path + "/frontend/pages/app", {
|
res.render(appRoot.path + "/frontend/pages/app", {
|
||||||
config: { id: req.params.lang, ...langs[req.params.lang] },
|
config: { id: lang, ...langs[lang] },
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
res.send(`No such language: ${req.params.lang}`);
|
res.send(`No such language: ${lang}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
app.use("/css", express.static(appRoot.path + "/frontend/styles"));
|
app.use("/css", express.static(appRoot.path + "/frontend/styles"));
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
"@types/app-root-path": "^1.2.4",
|
"@types/app-root-path": "^1.2.4",
|
||||||
"@types/express": "^4.17.6",
|
"@types/express": "^4.17.6",
|
||||||
"@types/express-ws": "^3.0.0",
|
"@types/express-ws": "^3.0.0",
|
||||||
|
"@types/lodash": "^4.14.155",
|
||||||
"@types/tmp": "^0.2.0",
|
"@types/tmp": "^0.2.0",
|
||||||
"app-root-path": "^3.0.0",
|
"app-root-path": "^3.0.0",
|
||||||
"css-loader": "^3.5.3",
|
"css-loader": "^3.5.3",
|
||||||
|
@ -14,6 +15,7 @@
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"express-ws": "^4.0.0",
|
"express-ws": "^4.0.0",
|
||||||
"file-loader": "^6.0.0",
|
"file-loader": "^6.0.0",
|
||||||
|
"lodash": "^4.17.15",
|
||||||
"mkdirp": "^1.0.4",
|
"mkdirp": "^1.0.4",
|
||||||
"monaco-editor": "^0.20.0",
|
"monaco-editor": "^0.20.0",
|
||||||
"node-pty": "^0.9.0",
|
"node-pty": "^0.9.0",
|
||||||
|
|
10
yarn.lock
10
yarn.lock
|
@ -55,6 +55,11 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339"
|
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339"
|
||||||
integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==
|
integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==
|
||||||
|
|
||||||
|
"@types/lodash@^4.14.155":
|
||||||
|
version "4.14.155"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.155.tgz#e2b4514f46a261fd11542e47519c20ebce7bc23a"
|
||||||
|
integrity sha512-vEcX7S7aPhsBCivxMwAANQburHBtfN9RdyXFk84IJmu2Z4Hkg1tOFgaslRiEqqvoLtbCBi6ika1EMspE+NZ9Lg==
|
||||||
|
|
||||||
"@types/mime@*":
|
"@types/mime@*":
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.2.tgz#857a118d8634c84bba7ae14088e4508490cd5da5"
|
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.2.tgz#857a118d8634c84bba7ae14088e4508490cd5da5"
|
||||||
|
@ -1911,6 +1916,11 @@ locate-path@^3.0.0:
|
||||||
p-locate "^3.0.0"
|
p-locate "^3.0.0"
|
||||||
path-exists "^3.0.0"
|
path-exists "^3.0.0"
|
||||||
|
|
||||||
|
lodash@^4.17.15:
|
||||||
|
version "4.17.15"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
|
||||||
|
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
|
||||||
|
|
||||||
lru-cache@^5.1.1:
|
lru-cache@^5.1.1:
|
||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
|
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
|
||||||
|
|
Loading…
Reference in New Issue