| 
					
				 | 
			
			
				@@ -13,10 +13,7 @@ import me.hammerle.exceptions.PreScriptException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class SnuviScript { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private static ISnuviLogger LOGGER; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private static SnuviParser PARSER; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public static void main(String[] args) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public static void main(String[] args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Executable executable; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		switch (args.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			case 0: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -30,23 +27,10 @@ public class SnuviScript { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				System.err.println("Illegal number of arguments."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		createLogger(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		createParser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		registerTerminalMethods(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		executeScript(executable); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private static void createLogger() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		LOGGER = new SnuviTerminalLogger(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private static void createParser() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		PARSER = new SnuviParser(LOGGER, new SnuviSimpleScheduler()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private static void registerTerminalMethods() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		PARSER.registerConsumer("print", (o, sc) -> System.out.println(ScriptUtils.connect(o, " ", 0))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		PARSER.registerFunction("read", (o, sc) -> readLine()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ISnuviLogger logger = createLogger(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SnuviParser  parser = createParser(logger); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		registerTerminalMethods(logger, parser); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		executeScript(executable, logger, parser); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private static String readLine() throws UncheckedIOException { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -69,11 +53,25 @@ public class SnuviScript { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return new Executable(name, code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private static void executeScript(Executable executable) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static ISnuviLogger createLogger() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return new FormattedSnuviLogger(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static SnuviParser createParser(ISnuviLogger logger) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return new SnuviParser(logger, new SnuviSimpleScheduler()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static void registerTerminalMethods(ISnuviLogger logger, SnuviParser parser) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		parser.registerConsumer("print", (o, sc) -> System.out.println(ScriptUtils.connect(o, " ", 0))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		parser.registerFunction("read", (o, sc) -> readLine()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		parser.registerConsumer("log", (o, sc) -> logger.printInfo(ScriptUtils.connect(o, " ", 0))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static void executeScript(Executable executable, ISnuviLogger logger, SnuviParser parser) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			PARSER.startScript(executable.getName(), executable.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			parser.startScript(executable.getName(), executable.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} catch (PreScriptException ex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			LOGGER.printException(ex, "none", executable.getName(), ex.getLine()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			logger.printException(ex, "none", executable.getName(), ex.getLine()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |