Initial import into git.
[galago.git] / java / galago / src / org / tartarus / snowball / TestApp.java
blobe1707f9eb4b006fec5eeff93d35c766f2b967273
2 package org.tartarus.snowball;
4 import java.lang.reflect.Method;
5 import java.io.Reader;
6 import java.io.Writer;
7 import java.io.BufferedReader;
8 import java.io.BufferedWriter;
9 import java.io.FileInputStream;
10 import java.io.InputStreamReader;
11 import java.io.OutputStreamWriter;
12 import java.io.OutputStream;
13 import java.io.FileOutputStream;
15 public class TestApp {
16 private static void usage()
18 System.err.println("Usage: TestApp <algorithm> <input file> [-o <output file>]");
21 public static void main(String [] args) throws Throwable {
22 if (args.length < 2) {
23 usage();
24 return;
27 Class stemClass = Class.forName("org.tartarus.snowball.ext." +
28 args[0] + "Stemmer");
29 SnowballProgram stemmer = (SnowballProgram) stemClass.newInstance();
30 Method stemMethod = stemClass.getMethod("stem", new Class[0]);
32 Reader reader;
33 reader = new InputStreamReader(new FileInputStream(args[1]));
34 reader = new BufferedReader(reader);
36 StringBuffer input = new StringBuffer();
38 OutputStream outstream;
40 if (args.length > 2) {
41 if (args.length == 4 && args[2].equals("-o")) {
42 outstream = new FileOutputStream(args[3]);
43 } else {
44 usage();
45 return;
47 } else {
48 outstream = System.out;
50 Writer output = new OutputStreamWriter(outstream);
51 output = new BufferedWriter(output);
53 int repeat = 1;
54 if (args.length > 4) {
55 repeat = Integer.parseInt(args[4]);
58 Object [] emptyArgs = new Object[0];
59 int character;
60 while ((character = reader.read()) != -1) {
61 char ch = (char) character;
62 if (Character.isWhitespace((char) ch)) {
63 if (input.length() > 0) {
64 stemmer.setCurrent(input.toString());
65 for (int i = repeat; i != 0; i--) {
66 stemMethod.invoke(stemmer, emptyArgs);
68 output.write(stemmer.getCurrent());
69 output.write('\n');
70 input.delete(0, input.length());
72 } else {
73 input.append(Character.toLowerCase(ch));
76 output.flush();