using System; using System.Windows.Forms; using System.IO; using System.Diagnostics; using Laj.FileUtils; namespace Laj { // Last modified: 2002-10-21 // Version: 0.42 ID:LAJGAIS44 // Compiles with Microsoft Visual C# .NET 7.0.9466 on Windows 95. // The source code is free. It is not under any kind of license. // If this code works, it was written by Lars Johansson, Göteborg. // If not, I don't know who wrote it. internal class Backend { static internal bool DoTidy; static internal string Location; static internal bool ProcessAllFileNames; static internal bool WalkSubfolders; static internal string SwitchesTidy; static internal string NewLocationTidy; static internal string CleanBegin; static internal string CleanEnd; static internal bool CleanMatchCase; static internal string NewLocationClean; static int FileNumber; static public void ProcessAll(string[] files) { foreach (string fileName in files) { if (File.Exists(fileName) ) { Backend.ProcessFile(fileName); } else if (fileName.IndexOf(@"\") > -1) { if (Directory.GetParent(fileName).Exists) { Backend.DoDirectoryWalk(Directory.GetParent(fileName).FullName, fileName); } } else { string fullName = Location + @"\" + fileName; if (Directory.GetParent(fullName).Exists) { Backend.DoDirectoryWalk(Directory.GetParent(fullName).FullName, fileName); } } } } static void ProcessFileInfo(FileInfo fi) { if (DoTidy) tidy(fi); else clean(fi); } static public void ProcessFile(string fileName) { Debug.WriteLine("File: " + fileName); FileInfo fi = new FileInfo(fileName); ProcessFileInfo(fi); } static public void DoDirectoryWalk(string root, string searchPattern) { Laj.FileUtils.DirectoryWalker dw = new Laj.FileUtils.DirectoryWalker( new Laj.FileUtils.DirectoryWalker.ProcessDirCallback(processWalkDir), new Laj.FileUtils.DirectoryWalker.ProcessFileCallback(processWalkFile), searchPattern, new Laj.FileUtils.DirectoryWalker.ProcessNumberOfFilesCallback( processWalkNumberOfFiles) ); dw.Walk(root, WalkSubfolders); } static void processWalkDir(DirectoryInfo di, int level) { writeSpaces(level * 2); Debug.WriteLine("Dir: " + di.FullName); } static void processWalkFile(FileInfo fi, int level) { writeSpaces(level * 2); Debug.WriteLine("File: " + fi.FullName); FileNumber++; FormMain.formMain.statusBarPanelFileNumber.Text = FileNumber.ToString(); ProcessFileInfo(fi); } static void processWalkNumberOfFiles(string directoryName, int filesCount) { FileNumber = 0; FormMain.formMain.statusBarPanelDirectory.Text = directoryName; FormMain.formMain.statusBarPanelFilesCount.Text = filesCount.ToString(); } static void writeSpaces(int spaces) { for (int k = 0; k < spaces; k++) Debug.Write(" "); } static System.Diagnostics.Process tidyProcess = new System.Diagnostics.Process(); static void tidy(FileInfo fi) { tidyProcess.StartInfo.FileName = "tidy.exe"; tidyProcess.StartInfo.Arguments = SwitchesTidy + " " + fi.FullName; tidyProcess.StartInfo.CreateNoWindow = true; tidyProcess.StartInfo.UseShellExecute = false; tidyProcess.StartInfo.RedirectStandardOutput = true; tidyProcess.Start(); string output = tidyProcess.StandardOutput.ReadToEnd(); tidyProcess.WaitForExit(); if (!Directory.Exists(NewLocationTidy) ) { Directory.CreateDirectory(NewLocationTidy); } string newName = NewLocationTidy + @"\" + fi.Name; Laj.FileUtils.ReadWrite.TextFile.Write(newName, output); } static void clean(FileInfo fi) { if (!Directory.Exists(NewLocationClean) ) { Directory.CreateDirectory(NewLocationClean); } string theFileAsString; Laj.FileUtils.ReadWrite.TextFile.Read(fi.FullName, out theFileAsString); string testString = (CleanMatchCase) ? theFileAsString : theFileAsString.ToUpper(); string testBegin = (CleanMatchCase) ? CleanBegin : CleanBegin.ToUpper(); string testEnd = (CleanMatchCase) ? CleanEnd : CleanEnd.ToUpper(); int begin = testString.IndexOf(testBegin); int end = (begin >= 0) ? testString.IndexOf(testEnd, begin) : -1;; if (end > begin) { int count = end - begin + CleanEnd.Length; theFileAsString = theFileAsString.Remove(begin, count); } string newName = NewLocationClean + @"\" + fi.Name; Laj.FileUtils.ReadWrite.TextFile.Write(newName, theFileAsString); } static public bool ShowOpenFileDialog(out string[] fileNames) { fileNames = new string[0]; OpenSaveDialogs.TheOpenFileDialog.Multiselect = true; bool ok = (OpenSaveDialogs.TheOpenFileDialog.ShowDialog() == DialogResult.OK); if (!ok) return false; fileNames = OpenSaveDialogs.TheOpenFileDialog.FileNames; return true; } private Backend() { } static Backend() { OpenSaveDialogs.TheOpenFileDialog.Filter = "HTM Files (*.htm)|*.htm|HTML Files (*.html)|*.html|All Files (*.*)|*.*|Text Files (*.txt)|*.txt"; } } }