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<String>();
		
		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();
				
				BufferedWriter bw = new BufferedWriter(new FileWriter(fname));
				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();
			}			
		}				
	}

}
