//以下是我做的java 文件的缩进排版,算法有缺点.但能用,
//不管怎么说,排java文件时比ultraledit的排版强。
import java.io.file;
import java.io.printstream;
import java.util.arraylist;
import lang9.str9;
import lang9.out;
import util9.load9;
class dentjavacode
{
public static boolean dent(file file, file file1)
{
string as[] = new string[1];
if(file == null || !file.exists())
{
return false;
} else
{
as = load9.copy(file, as);
arraylist arraylist = new arraylist();
dent(as, arraylist, 0);
as = (string[])arraylist.toarray(as);
out.b("s.len=" + as.length);
load9.copy(as, file1);
return true;
}
}
public static int dent(arraylist arraylist, arraylist arraylist1, int i)
{
if(arraylist == null && arraylist.size() == 0)
{
system.out.println("dent frm list1,but list1 isnull");
return i;
}
if(arraylist1 == null)
{
system.out.println("dent to list2,but list2 is null");
return i;
} else
{
string as[] = new string[1];
as = (string[])arraylist.toarray(as);
return dent(as, arraylist1, i);
}
}
public static string[] dent(string as[], string as1[], int i)
{
arraylist arraylist = new arraylist();
dent(as, arraylist, i);
if(as1 == null)
as1 = new string[1];
return (string[])arraylist.toarray(as1);
}
public static int dent(string as[], arraylist arraylist, int i)
{
int j = as.length;
boolean flag = false;
if(as == null || as.length == 0)
{
system.out.println("dent from s[],but s[] is null");
return i;
}
if(arraylist == null)
{
system.out.println("dent to list,but list is null");
return i;
}
for(int l = 0; l < as.length; l++)
{
if(as[l] == null)
continue;
as[l] = as[l].trim();
int k = as[l].length();
if(k == 0)
continue;
int i1 = str9.indexof_outquotes(special, as[l]);
if(i1 < 0)
{
if(flag)
arraylist.add(space(2) + as[l]);
else
arraylist.add(space(i) + as[l]);
continue;
}
string s = as[l].substring(i1);
if(s.indexof("{") == 0)
s = "{";
else
if(s.indexof("}") == 0)
s = "}";
else
if(s.indexof("//") == 0)
s = "//";
else
if(s.indexof("*/") == 0)
s = "*/";
else
if(s.indexof("/*") == 0)
s = "/*";
if(s.equals("//"))
{
if(i1 > 0)
{
arraylist.add(space(i) + as[l].substring(0, i1));
arraylist.add(space(i) + as[l].substring(i1));
} else
{
arraylist.add(space(i) + as[l]);
}
continue;
}
if(s.equals("*/"))
{
flag = false;
if(i1 > 0)
arraylist.add(space(2) + as[l].substring(0, i1));
arraylist.add("*/");
i1 += 2;
if(k > i1)
{
as[l] = as[l].substring(i1);
l--;
}
continue;
}
if(s.equals("/*"))
{
flag = true;
if(i1 > 0)
{
arraylist.add(space(i) + as[l].substring(0, i1));
as[l] = as[l].substring(i1);
}
if((i1 = str9.indexof_outquotes("*/", as[l], i1 + 2)) != -1)
{
flag = false;
i1 += 2;
arraylist.add(as[l].substring(0, i1));
if(as[l].length() > i1)
{
as[l] = as[l].substring(i1);
l--;
}
continue;
}
if(as[l].length() <= 0)
continue;
arraylist.add("/*");
as[l] = as[l].substring(2);
if(as[l].length() > 0)
arraylist.add(space(2) + as[l]);
continue;
}
if(s.equals("{"))
{
i1++;
if(as[l].indexof("//") == i1)
{
arraylist.add(space(i) + as[l]);
i += increment;
continue;
}
arraylist.add(space(i) + as[l].substring(0, i1));
i += increment;
if(k > i1)
{
as[l] = as[l].substring(i1);
l--;
}
continue;
}
if(s.equals("}"))
{
arraylist.add(space(i) + as[l].substring(0, i1));
i -= increment;
i1++;
if(k > i1 && as[l].charat(i1) == ';')
{
arraylist.add(space(i) + "};");
i1++;
if(k > i1)
{
as[l] = as[l].substring(i1);
l--;
}
continue;
}
if(as[l].indexof("}//") == 0)
{
system.out.println("2s[i]=" + as[l] + ",indent=" + i);
arraylist.add(space(i) + as[l]);
continue;
}
arraylist.add(space(i) + "}");
if(k > i1)
{
as[l] = as[l].substring(i1);
l--;
}
} else
{
arraylist.add(space(i) + as[l]);
}
}
return i;
}
static string space(int i)
{
return str9.repeat(' ', i);
}
public dentjavacode(file file)
{
string as[] = null;
as = load9.copy(file, as);
arraylist arraylist = new arraylist();
dent(as, arraylist, 0);
string s = file.getname();
int i = 0;
boolean flag = false;
file file1;
file1 = file1 = new file(s + "dent0");
i = 1;
do
{
if(i >= 5)
break;
file1 = new file(s + "dent" + i);
if(!file1.exists())
break;
i++;
} while(true);
if(file1.exists())
file1.delete();
if(file.renameto(file1))
{
string as1[] = (string[])arraylist.toarray(as);
load9.copy(as1, file);
system.out.println("ok");
} else
{
system.out.println("rename:false");
}
}
public static void main(string args[])
{
string args1[] = new string[1];
file file = new file(args[0]);
args1 = load9.copy(file, args1);
arraylist arraylist = new arraylist();
dent(args1, arraylist, 0);
file file1 = new file(args[0] + "dent0");
int i = 1;
do
{
if(i >= 5)
break;
file1 = new file(args[0] + "dent" + i);
if(!file1.exists())
break;
i++;
} while(true);
if(file1.exists())
file1.delete();
string args2[] = (string[])arraylist.toarray(args1);
if(file.renameto(file1))
{
load9.copy(args2, file);
system.out.println("ok");
} else
{
system.out.println("rename:false");
}
}
static int increment = 3;
public static string special[] = {
"{", "}", "//", "/*", "*/"
};
}
闽公网安备 35060202000074号