codelly
Version:
codelly is a Node.JS module for online compiling. Based on Compilex.
516 lines (395 loc) • 9.85 kB
Markdown
# codelly
codelly is a Node.JS module for online compiling. Based on [Compilex](https://github.com/scriptnull/compilex).
## Supported Languages
| Language | Support |
|---------|:-------:|
|C |✔|
|C++ | ✔ |
|Java | ✔ |
|Python | ✔ |
|C# | ✔ |
|Visual Basic | ✔ |
|Rust | ✔ |
|GO | ✔ |
|PHP | ✔ |
|Swift | ✔ |
|Ruby | ✔ |
|Kotlin | ✔ |
|TypeScript | ✔ |
|Scala | ✔ |
|R | ✔ |
|Julia | ✔ |
|Perl | ✔ |
|Lua | ✔ |
|Haskell | ✔ |
## Setting Up Compilers
<h4>C and C++</h4>
<ol>
<li>Windows : <a href="https://www.mingw-w64.org/">MinGw-w64</a></li>
<li>Linux : <a href="http://gcc.gnu.org/wiki/InstallingGCC">GCC</a></li>
</ol>
<h4>Java</h4>
<ol>
<li>Windows - Linux : <a href="https://www.oracle.com/java/technologies/downloads/">JDK</a></li>
</ol>
<h4>Python</h4>
<ol>
<li>Windows - Linux : <a href="https://www.python.org/downloads/">Python</a></li>
</ol>
<h4>C#</h4>
<ol>
<li>Windows : <a href="https://dotnet.microsoft.com/en-us/download/dotnet-framework">.NET Framework</a></li>
<li>Linux : <a href="https://www.mono-project.com/download/stable/">Mono</a></li>
</ol>
<h4>Visual Basics</h4>
<ol>
<li>Windows : <a href="https://dotnet.microsoft.com/en-us/download/dotnet-framework">.NET Framework</a></li>
</ol>
<h4>Rust</h4>
<ol>
<li>Windows - Linux : <a href="https://www.rust-lang.org/tools/install">Rust</a></li>
</ol>
<h4>GO</h4>
<ol>
<li>Windows - Linux : <a href="https://go.dev/doc/install">GO</a></li>
</ol>
<h4>PHP</h4>
<ol>
<li>Windows : <a href="https://windows.php.net/download/">PHP for Windows</a></li>
<li>Linux : <a href="https://www.php.net/downloads/">PHP for Linux</a></li>
</ol>
<h4>Swift</h4>
<ol>
<li>Windows - Linux : <a href="https://www.swift.org/download/">Swift.org</a></li>
</ol>
<h4>Ruby</h4>
<ol>
<li>Windows - Linux : <a href="https://www.ruby-lang.org/en/downloads/">Ruby</a></li>
</ol>
<h4>Kotlin</h4>
<ol>
<li>Windows - Linux : <a href="https://kotlinlang.org/docs/command-line.html">Kotlin</a></li>
</ol>
<h4>TypeScript</h4>
<ol>
<li>Windows - Linux : <a href="https://www.typescriptlang.org/download">TypeScript</a></li>
</ol>
<h4>Scala</h4>
<ol>
<li>Windows - Linux : <a href="https://www.scala-lang.org/download/">Scala</a></li>
</ol>
<h4>R</h4>
<ol>
<li>Windows - Linux : <a href="https://www.r-project.org/">R</a></li>
</ol>
<h4>Julia</h4>
<ol>
<li>Windows - Linux : <a href="https://julialang.org/downloads/">Julia</a></li>
</ol>
<h4>Perl</h4>
<ol>
<li>Windows - Linux : <a href="https://www.perl.org/get.html">Perl</a></li>
</ol>
<h4>Lua</h4>
<ol>
<li>Windows - Linux : <a href="https://www.lua.org/download.html">Lua</a></li>
</ol>
<h4>Haskell</h4>
<ol>
<li>Windows - Linux : <a href="https://www.haskell.org/ghc/">GHC (Glasgow Haskell Compiler)</a></li>
</ol>
## Documentation
<h5>At first - Require </h5>
```javascript
var compiler = require('codelly');
var options = {stats : true}; //prints stats to console
compiler.init(options);
```
<h5>C and C++ </h5>
```javascript
//if windows
var envData = { OS : "windows" , cmd : "g++" ,options: {timeout:100000}}; // (uses g++ command to compile )
//else
var envData = { OS : "linux" , cmd : "gcc" }; // ( uses gcc command to compile )
//Without Input:
compiler.compileCPP(envData , code , function (data) {
res.send(data);
//data.error = error message
//data.output = output value
});
//With Input
compiler.compileCPPWithInput(envData , code , input , function (data) {
res.send(data);
});
```
<h5>Java</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileJava( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileJavaWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>Python</h5>
```javascript
//if your server's python command is 'python'
var envData = { cmd : "python"};
//else if your server's python command is 'python3'
var envData = { OS : "python3" };
//Without Input:
compiler.compilePython( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compilePythonWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>C#</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileCS( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileCSWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>Visual Basic</h5>
```javascript
var envData = { OS : "windows"};
//Without Input:
compiler.compileVB( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileVBWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>Rust</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileRust( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileRustWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>GO</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileGO( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileGOWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>PHP</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compilePHP( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compilePHPWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>Swift</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileSwift( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileSwiftWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>Ruby</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileRuby( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileRubyWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>Kotlin</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileKotlin( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileKotlinWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>TypeScript</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileTS( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileTSWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>Scala</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileScala( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileScalaWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>R</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileR( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileRWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>Julia</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileJulia( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileJuliaWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>Perl</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compilePerl( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compilePerlWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>Lua</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileLua( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileLuaWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h5>Haskell</h5>
```javascript
//if windows
var envData = { OS : "windows"};
//else
var envData = { OS : "linux" };
//Without Input:
compiler.compileHaskell( envData , code , function(data){
res.send(data);
});
//With Input
compiler.compileHaskellWithInput( envData , code , input , function(data){
res.send(data);
});
```
<h4>Additionals: </h4>
<h5>Memory Management </h5>
```javascript
compiler.flush(function(){
console.log('All temporary files flushed !');
});
```
Synchronous version of flush
```javascript
compiler.flushSync();
```
<h5>Statistical Data</h5>
```javascript
compiler.fullStat(function(data){
res.send(data);
});
```
## Licence
This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.