samples/javashell.js

Print this page




  23  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  24  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  25  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  26  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  27  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  28  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  29  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  30  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  31  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32  */
  33 
  34 // Simple Java "shell" with which you can try out
  35 // your few liner Java code leaving imports, main etc.
  36 // And you can leave even compilation as this script
  37 // takes care boilerplate+compile step for you.
  38 
  39 // Java types used
  40 var Arrays = Java.type("java.util.Arrays");
  41 var BufferedReader = Java.type("java.io.BufferedReader");
  42 var FileWriter = Java.type("java.io.FileWriter");

  43 var LocalDateTime = Java.type("java.time.LocalDateTime");
  44 var InputStreamReader = Java.type("java.io.InputStreamReader");
  45 var PrintWriter = Java.type("java.io.PrintWriter");
  46 var ProcessBuilder = Java.type("java.lang.ProcessBuilder");
  47 var System = Java.type("java.lang.System");
  48 
  49 // read multiple lines of input from stdin till user
  50 // enters an empty line
  51 function input(endMarker, prompt) {
  52     if (!endMarker) {
  53         endMarker = "";
  54     }
  55 
  56     if (!prompt) {
  57         prompt = " >> ";
  58     }
  59 
  60     var str = "";
  61     var reader = new BufferedReader(new InputStreamReader(System.in));
  62     var line;


 104 import java.time.zone.*;
 105 import java.util.*;
 106 import java.util.concurrent.*;
 107 import java.util.function.*;
 108 import java.util.stream.*;
 109 
 110 public class ${className} {
 111    public static void main(String[] args) throws Exception {
 112        ${usercode}
 113    }
 114 }
 115 EOF
 116 
 117     writeTo("${className}.java", fullcode);
 118     return true;
 119 }
 120 
 121 // execute code command
 122 function exec(args) {
 123     // build child process and start it!
 124     new ProcessBuilder(Arrays.asList(args.split(' ')))
 125          .inheritIO()
 126          .start()
 127          .waitFor();
 128 }
 129 
 130 // generate unique name
 131 function uniqueName() {
 132     var now = LocalDateTime.now().toString();
 133     // replace unsafe chars with '_'
 134     return "JavaShell" + now.replace(/-|:|\./g, '_');
 135 }
 136 
 137 // read-compile-run loop
 138 while(true) {
 139     var className = uniqueName();
 140     if (generate(className)) {
 141         exec("javac ${className}.java");
 142         exec("java ${className}");
 143     } else {
 144         break;


  23  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  24  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  25  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  26  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  27  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  28  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  29  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  30  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  31  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32  */
  33 
  34 // Simple Java "shell" with which you can try out
  35 // your few liner Java code leaving imports, main etc.
  36 // And you can leave even compilation as this script
  37 // takes care boilerplate+compile step for you.
  38 
  39 // Java types used
  40 var Arrays = Java.type("java.util.Arrays");
  41 var BufferedReader = Java.type("java.io.BufferedReader");
  42 var FileWriter = Java.type("java.io.FileWriter");
  43 var List = Java.type("java.util.List");
  44 var LocalDateTime = Java.type("java.time.LocalDateTime");
  45 var InputStreamReader = Java.type("java.io.InputStreamReader");
  46 var PrintWriter = Java.type("java.io.PrintWriter");
  47 var ProcessBuilder = Java.type("java.lang.ProcessBuilder");
  48 var System = Java.type("java.lang.System");
  49 
  50 // read multiple lines of input from stdin till user
  51 // enters an empty line
  52 function input(endMarker, prompt) {
  53     if (!endMarker) {
  54         endMarker = "";
  55     }
  56 
  57     if (!prompt) {
  58         prompt = " >> ";
  59     }
  60 
  61     var str = "";
  62     var reader = new BufferedReader(new InputStreamReader(System.in));
  63     var line;


 105 import java.time.zone.*;
 106 import java.util.*;
 107 import java.util.concurrent.*;
 108 import java.util.function.*;
 109 import java.util.stream.*;
 110 
 111 public class ${className} {
 112    public static void main(String[] args) throws Exception {
 113        ${usercode}
 114    }
 115 }
 116 EOF
 117 
 118     writeTo("${className}.java", fullcode);
 119     return true;
 120 }
 121 
 122 // execute code command
 123 function exec(args) {
 124     // build child process and start it!
 125     new ProcessBuilder(Java.to(args.split(' '), List))
 126          .inheritIO()
 127          .start()
 128          .waitFor();
 129 }
 130 
 131 // generate unique name
 132 function uniqueName() {
 133     var now = LocalDateTime.now().toString();
 134     // replace unsafe chars with '_'
 135     return "JavaShell" + now.replace(/-|:|\./g, '_');
 136 }
 137 
 138 // read-compile-run loop
 139 while(true) {
 140     var className = uniqueName();
 141     if (generate(className)) {
 142         exec("javac ${className}.java");
 143         exec("java ${className}");
 144     } else {
 145         break;