package innovimax.mixthem;

import innovimax.mixthem.interfaces.IInputLine;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
* <p>Reads lines from a character-input file.</p>
* <p>This is the default implementation of IInputLine.</p>
* @see IInputLine
* @author Innovimax
* @version 1.0
*/
public class DefaultLineReader implements IInputLine {

	private final BufferedReader reader;

	/**
 	* Creates a line reader.
 	* @param file The input file to be read
 	* @throws IOException - If an I/O error occurs
 	*/
	public DefaultLineReader(File input) throws IOException {
		this.reader = new BufferedReader(new FileReader(input));
	}

	@Override
	public boolean hasLine() throws IOException {
		return this.reader.ready();
	}

	@Override
	public String nextLine(ReadType type, boolean force) throws IOException {
		return this.reader.readLine();
	}

	@Override
	public void close() throws IOException {
		this.reader.close();
	}

}

@@ -440,16 +440,39 @@
  reader;
+%0A%09private boolean jump;
 %0A%0A%09/**%0A 
@@ -539,16 +539,70 @@
 be read%0A
+ %09* @param first True is this reader is the first one%0A
  %09* @thr
@@ -683,16 +683,31 @@
 le input
+, boolean first
 ) throws
@@ -779,16 +779,40 @@
 input));
+%09%09%0A%09%09this.jump = !first;
 %0A%09%7D%0A%0A%09@O
@@ -992,37 +992,259 @@
 %7B%0A%09%09
-return this.reader.readLine()
+String line = null;%0A%09%09switch (type) %7B%0A%09%09%09case _SIMPLE:%0A%09%09%09%09if (this.jump && !force) %7B%0A%09%09%09%09%09this.reader.readLine();%09%09%09%09%09%09%0A%09%09%09%09%7D%0A%09%09%09%09line = this.reader.readLine();%0A%09%09%09%09this.jump = true;%0A%09%09%09%09break;%0A%09%09%09case _RANDOM:%0A%09%09%09%09//TODO%0A%09%09%09%09break;%0A%09%09%7D%0A%09%09return line
 ;%0A%09%7D

Update DefaultLineReader.java