mirror of
https://github.com/maaslalani/slides.git
synced 2026-01-10 23:08:04 -05:00
As of Java 11 a single file can be launched without explicitly compiling, packaging and running the file in different steps. In other words single-file source-code programs can be executed with "java Program.java", where "Program.java" is the name of the file to be executed.
80 lines
1.7 KiB
Go
80 lines
1.7 KiB
Go
package code
|
|
|
|
// cmds: Multiple commands; placeholders can be used
|
|
// Placeholders <file>, <name> and <path> can be used.
|
|
type cmds [][]string
|
|
|
|
// Language represents a programming language with it Extension and Commands to
|
|
// execute its programs.
|
|
type Language struct {
|
|
// Extension represents the file extension used by this language.
|
|
Extension string
|
|
// Commands [][]string // placeholders: <name> file name (without
|
|
// extension), <file> file name, <path> path without file name
|
|
Commands cmds
|
|
}
|
|
|
|
// Supported Languages
|
|
const (
|
|
Bash = "bash"
|
|
Elixir = "elixir"
|
|
Go = "go"
|
|
Javascript = "javascript"
|
|
Lua = "lua"
|
|
Perl = "perl"
|
|
Python = "python"
|
|
Ruby = "ruby"
|
|
Rust = "rust"
|
|
Java = "java"
|
|
)
|
|
|
|
// Languages is a map of supported languages with their extensions and commands
|
|
// to run to execute the program.
|
|
var Languages = map[string]Language{
|
|
Bash: {
|
|
Extension: "sh",
|
|
Commands: cmds{{"bash", "<file>"}},
|
|
},
|
|
Elixir: {
|
|
Extension: "exs",
|
|
Commands: cmds{{"elixir", "<file>"}},
|
|
},
|
|
Go: {
|
|
Extension: "go",
|
|
Commands: cmds{{"go", "run", "<file>"}},
|
|
},
|
|
Javascript: {
|
|
Extension: "js",
|
|
Commands: cmds{{"node", "<file>"}},
|
|
},
|
|
Lua: {
|
|
Extension: "lua",
|
|
Commands: cmds{{"lua", "<file>"}},
|
|
},
|
|
Ruby: {
|
|
Extension: "rb",
|
|
Commands: cmds{{"ruby", "<file>"}},
|
|
},
|
|
Python: {
|
|
Extension: "py",
|
|
Commands: cmds{{"python", "<file>"}},
|
|
},
|
|
Perl: {
|
|
Extension: "pl",
|
|
Commands: cmds{{"perl", "<file>"}},
|
|
},
|
|
Rust: {
|
|
Extension: "rs",
|
|
Commands: cmds{
|
|
// compile code
|
|
{"rustc", "<file>", "-o", "<path>/<name>.run"},
|
|
// run compiled file
|
|
{"<path>/<name>.run"},
|
|
},
|
|
},
|
|
Java: {
|
|
Extension: "java",
|
|
Commands: cmds{{"java", "<file>"}},
|
|
},
|
|
}
|