java/ch/wlkl/wsh/Ut.java
package ch.wlkl.wsh;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Array;
import java.util.Collection;
public class Ut<T> {
public final static Ut<String> string = new Ut<String>(String.class);
public static <C, A extends C> Collection<C> addAll(Collection<C> col, A... arr) {
if (arr != null)
for (A a: arr)
col.add(a);
return col;
}
public static <C> C[] array(C... eles) {
return eles;
}
public static <C> C[] put(C[] dest, int from, C... eles) {
for (int ex=0; ex < eles.length; ex++)
dest[from+ex] = eles[ex];
return dest;
}
public static <C> C[] copy(C[] dst, int frDst, C[] src, int frSrc) {
for (int sx=frSrc; sx < src.length; sx++)
dst[frDst+sx-frSrc] = src[sx];
return dst;
}
public static <C, A extends C> void write(Write<C> wri, A... arr) {
for (A a: arr)
wri.write(a);
}
public static String crLf(String s) {
int rx = s.indexOf('\r');
int nx = s.indexOf('\n');
while (rx >= 0 && nx == rx+1) {
rx = s.indexOf('\r', nx+1);
nx = s.indexOf('\n', nx+1);
}
if (rx < 0 && nx < 0)
return s;
int bx = 0;
StringBuffer res = new StringBuffer();
while (true) {
if (rx >= 0 && nx == rx+1) {
rx = s.indexOf('\r', nx+1);
nx = s.indexOf('\n', nx+1);
} else if (rx >= 0 && (nx < 0 || nx > rx)) {
res.append(s, bx, nx).append("\r\n");
rx = s.indexOf('\r', bx=rx+1);
} else if (nx >= 0) {
res.append(s, bx, nx).append("\r\n");
nx = s.indexOf('\n', bx = nx+1);
} else {
return res.append(s, bx, s.length()).toString();
}
}
}
public static File canonical(File f) {
try {
return f.getCanonicalFile();
} catch (IOException e) {
return f.getAbsoluteFile();
}
}
public static String cat(Read<String> rdr, String mid) {
StringBuffer b = new StringBuffer();
String line;
rdr.open("-r");
while (null != (line = rdr.read()))
b.append(line).append(mid);
return b.substring(0, b.length() == 0 ? 0 : b.length() - mid.length());
}
@SuppressWarnings("unchecked")
public static <C> C[] asArray(Class<C> cl, Collection<? extends C> col) {
return col.toArray((C[]) Array.newInstance(cl, col.size()));
}
@SuppressWarnings("unchecked")
public static <C> C[] sArray(Collection<C> col) {
return col.toArray((C[]) Array.newInstance(col.iterator().next().getClass(), col.size()));
}
public static void preSuf(String pre, String suf) {
String one;
while (null != (one = Env.env().read()))
Env.env().write(pre + one + suf);
}
Class<T> clazz;
Ut(Class<T> cl) {
clazz = cl;
}
public T[] asArray(Collection<? extends T> col) {
return asArray(clazz, col);
}
}