Starts moving parsing to its own class
This commit is contained in:
		| @@ -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 <p>A string.</p> | ||||
|      * @return <p>A list of tokens.</p> | ||||
|      */ | ||||
|     private static List<String> tokenizer(String input) { | ||||
|         List<String> 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 <p>If reading or writing fails.</p> | ||||
| @@ -261,7 +217,7 @@ public class Main { | ||||
|      * @return <p>A list of tokens.</p> | ||||
|      */ | ||||
|     private static List<String> readInput(int max) { | ||||
|         List<String> tokens =  tokenizer(READER.nextLine()); | ||||
|         List<String> tokens =  tokenize(READER.nextLine()); | ||||
|         if (max < tokens.size()) { | ||||
|             throw new IllegalArgumentException("Input contains " + tokens.size() + | ||||
|                     " arguments, but the input only supports " + max + " arguments."); | ||||
|   | ||||
							
								
								
									
										53
									
								
								src/main/java/ffmpegconverter/Parser.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								src/main/java/ffmpegconverter/Parser.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | ||||
| package ffmpegconverter; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| public class Parser { | ||||
|  | ||||
|     /** | ||||
|      * Tokenizes a string | ||||
|      * @param input <p>A string.</p> | ||||
|      * @return <p>A list of tokens.</p> | ||||
|      */ | ||||
|     public static List<String> tokenize(String input) { | ||||
|         List<String> 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; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user