diff --git a/src/main/java/ffmpegconverter/Main.java b/src/main/java/ffmpegconverter/Main.java
index b67a9d6..694a6e3 100644
--- a/src/main/java/ffmpegconverter/Main.java
+++ b/src/main/java/ffmpegconverter/Main.java
@@ -11,6 +11,8 @@ import java.util.List;
import java.util.Scanner;
import java.util.function.Predicate;
+import static ffmpegconverter.Parser.tokenize;
+
/**
* Converts a files or files in a folder to a web playable mp4.
*/
@@ -165,52 +167,6 @@ public class Main {
}
}
- /**
- * Tokenizes a string
- * @param input
A string.
- * @return A list of tokens.
- */
- private static List tokenizer(String input) {
- List tokens = new ArrayList<>();
- boolean startedQuote = false;
- StringBuilder currentToken = new StringBuilder();
- for (int i = 0; i < input.length(); i++) {
- char c = input.charAt(i);
- switch (c) {
- case ' ':
- if (!startedQuote) {
- //If not inside "", a space marks the end of a parameter
- if (!currentToken.toString().trim().equals("")) {
- tokens.add(currentToken.toString());
- currentToken = new StringBuilder();
- } else {
- currentToken = new StringBuilder();
- }
- } else {
- currentToken.append(c);
- }
- break;
- case '"':
- if (startedQuote) {
- if (!currentToken.toString().trim().equals("")) {
- tokens.add(currentToken.toString());
- currentToken = new StringBuilder();
- }
- startedQuote = false;
- } else {
- startedQuote = true;
- currentToken = new StringBuilder();
- } break;
- default:
- currentToken.append(c);
- if (i == input.length() - 1) {
- tokens.add(currentToken.toString());
- } break;
- }
- }
- return tokens;
- }
-
/**
* Initializes the anime converter
* @throws IOException If reading or writing fails.
@@ -261,7 +217,7 @@ public class Main {
* @return A list of tokens.
*/
private static List readInput(int max) {
- List tokens = tokenizer(READER.nextLine());
+ List tokens = tokenize(READER.nextLine());
if (max < tokens.size()) {
throw new IllegalArgumentException("Input contains " + tokens.size() +
" arguments, but the input only supports " + max + " arguments.");
diff --git a/src/main/java/ffmpegconverter/Parser.java b/src/main/java/ffmpegconverter/Parser.java
new file mode 100644
index 0000000..39b7748
--- /dev/null
+++ b/src/main/java/ffmpegconverter/Parser.java
@@ -0,0 +1,53 @@
+package ffmpegconverter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Parser {
+
+ /**
+ * Tokenizes a string
+ * @param input A string.
+ * @return A list of tokens.
+ */
+ public static List tokenize(String input) {
+ List tokens = new ArrayList<>();
+ boolean startedQuote = false;
+ StringBuilder currentToken = new StringBuilder();
+ for (int i = 0; i < input.length(); i++) {
+ char c = input.charAt(i);
+ switch (c) {
+ case ' ':
+ if (!startedQuote) {
+ //If not inside "", a space marks the end of a parameter
+ if (!currentToken.toString().trim().equals("")) {
+ tokens.add(currentToken.toString());
+ currentToken = new StringBuilder();
+ } else {
+ currentToken = new StringBuilder();
+ }
+ } else {
+ currentToken.append(c);
+ }
+ break;
+ case '"':
+ if (startedQuote) {
+ if (!currentToken.toString().trim().equals("")) {
+ tokens.add(currentToken.toString());
+ currentToken = new StringBuilder();
+ }
+ startedQuote = false;
+ } else {
+ startedQuote = true;
+ currentToken = new StringBuilder();
+ } break;
+ default:
+ currentToken.append(c);
+ if (i == input.length() - 1) {
+ tokens.add(currentToken.toString());
+ } break;
+ }
+ }
+ return tokens;
+ }
+}