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;
|