diff options
Diffstat (limited to 'src/main/com/jantuomi')
3 files changed, 49 insertions, 16 deletions
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/InputBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/InputBuiltinFunction.java index 4c52d46..26df094 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/InputBuiltinFunction.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/InputBuiltinFunction.java @@ -1,9 +1,12 @@ package com.jantuomi.tunkki.core.runtime.builtins.globals; import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.NadaDatatype; import com.jantuomi.tunkki.core.parser.datatype.StringDatatype; import com.jantuomi.tunkki.exception.types.TunkkiError; +import com.jantuomi.tunkki.utils.IO; +import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.Scanner; @@ -24,8 +27,14 @@ public class InputBuiltinFunction extends BuiltinFunction { Datatype param = params.get(0); System.out.print(param.getData().toString()); } - Scanner in = new Scanner(System.in); - String userInput = in.nextLine(); - return new StringDatatype(userInput); + String in; + try { + in = IO.getInstance().readLine(""); + return new StringDatatype(in); + } catch (IOException e) { + e.printStackTrace(); + return new NadaDatatype(); + } + } } diff --git a/src/main/com/jantuomi/tunkki/repl/Repl.java b/src/main/com/jantuomi/tunkki/repl/Repl.java index aeb620b..c6d843b 100644 --- a/src/main/com/jantuomi/tunkki/repl/Repl.java +++ b/src/main/com/jantuomi/tunkki/repl/Repl.java @@ -2,6 +2,7 @@ package com.jantuomi.tunkki.repl; import com.jantuomi.tunkki.Tunkki; import com.jantuomi.tunkki.exception.types.TunkkiError; +import com.jantuomi.tunkki.utils.IO; import jline.console.*; import java.io.IOException; @@ -21,19 +22,15 @@ public class Repl { public void run() throws IOException, InterruptedException { showWelcomeText(); - ConsoleReader reader = new ConsoleReader(); - reader.setBellEnabled(false); - reader.setExpandEvents(false); - String line; String command = ""; PrintWriter out = new PrintWriter(System.out); boolean isMultilineInput = false; while (true) { if (isMultilineInput) { - line = readLine(reader, "... "); + line = IO.getInstance().readLine("... "); } else { - line = readLine(reader, "tunkki> "); + line = IO.getInstance().readLine("tunkki> "); } if (line.endsWith("\\")) { @@ -56,13 +53,6 @@ public class Repl { } } - private String readLine(ConsoleReader reader, String promptMessage) - throws IOException { - System.out.print(promptMessage); - String line = reader.readLine(); - return line.trim(); - } - private void showWelcomeText() { System.out.println(String.format("tunkki REPL version %s", tunkki.versionString())); System.out.println("Copyright: Jan Tuomi 2016"); diff --git a/src/main/com/jantuomi/tunkki/utils/IO.java b/src/main/com/jantuomi/tunkki/utils/IO.java new file mode 100644 index 0000000..ec3ac2a --- /dev/null +++ b/src/main/com/jantuomi/tunkki/utils/IO.java @@ -0,0 +1,34 @@ +package com.jantuomi.tunkki.utils; + +import jline.console.ConsoleReader; + +import java.io.IOException; + +/** + * Created by jan on 4.8.2016. + */ +public class IO { + private static IO instance = new IO(); + private ConsoleReader reader; + + public static IO getInstance() { + return instance; + } + + private IO() { + try { + reader = new ConsoleReader(); + } catch (IOException e) { + e.printStackTrace(); + } + reader.setBellEnabled(false); + reader.setExpandEvents(false); + } + + public String readLine(String promptMessage) + throws IOException { + System.out.print(promptMessage); + String line = reader.readLine(); + return line.trim(); + } +} |
