package tabs2spaces;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

public class Tabs2Spaces
{
	public static void main(String[] args)
	{
		int tabsize = 4;

		if (args.length < 1)
		{
			System.out.println(
					"Usage: Tabs2Spaces [-sxx] file1  where xx is spaces per tab");
			return;
		}

		ArrayList<String> files = new ArrayList<>();

		for (String arg : args)
		{
			if (arg.startsWith("-s"))
			{
				String t = arg.substring(2);
				try
				{
					tabsize = Integer.parseInt(t);
				}
				catch (NumberFormatException e)
				{
					System.out.println("Invalid spaces for tab flag");
				}
			}
			else
				files.add(arg);
		}

		for (String fname : files)
		{
			int count = 0;
			try
			{
				BufferedReader br = new BufferedReader(new FileReader(fname));
				StringBuilder sb = new StringBuilder();

				int ch = br.read();
				while (ch != -1)
				{
					if ((char) ch != '\t')
						sb.append((char) ch);
					else
					{
						for (int i = 0; i < tabsize; i++)
							sb.append(' ');
						count++;
					}
					ch = br.read();
				}
				br.close();

				int dot = fname.indexOf(".");
				String extension = fname.substring(dot);
				String outfname = fname.substring(0, dot) + "notabs" + extension;
				System.out.println("Output filename: " + outfname);
				
				BufferedWriter bw = new BufferedWriter(new FileWriter(outfname));
				bw.write(sb.toString());
				bw.close();
				System.out.printf("%s, %d tabs replaced. \n", fname, count);
			}
			catch (FileNotFoundException e)
			{
				System.out.println("Error with file: " + e.getMessage());
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}

}
