1 2 package org.tartarus.snowball; 3 4 import java.lang.reflect.Method; 5 import java.io.BufferedReader; 6 import java.io.BufferedWriter; 7 import java.io.FileInputStream; 8 import java.io.FileOutputStream; 9 import java.io.InputStream; 10 import java.io.InputStreamReader; 11 import java.io.OutputStream; 12 import java.io.OutputStreamWriter; 13 import java.io.Reader; 14 import java.io.Writer; 15 import java.nio.charset.StandardCharsets; 16 17 public class TestApp { usage()18 private static void usage() 19 { 20 System.err.println("Usage: TestApp <algorithm> [<input file>] [-o <output file>]"); 21 } 22 main(String [] args)23 public static void main(String [] args) throws Throwable { 24 if (args.length < 2) { 25 usage(); 26 return; 27 } 28 29 Class stemClass = Class.forName("org.tartarus.snowball.ext." + 30 args[0] + "Stemmer"); 31 SnowballStemmer stemmer = (SnowballStemmer) stemClass.newInstance(); 32 33 int arg = 1; 34 35 InputStream instream; 36 if (args.length > arg && !args[arg].equals("-o")) { 37 instream = new FileInputStream(args[arg++]); 38 } else { 39 instream = System.in; 40 } 41 42 OutputStream outstream; 43 if (args.length > arg) { 44 if (args.length != arg + 2 || !args[arg].equals("-o")) { 45 usage(); 46 return; 47 } 48 outstream = new FileOutputStream(args[arg + 1]); 49 } else { 50 outstream = System.out; 51 } 52 53 Reader reader = new InputStreamReader(instream, StandardCharsets.UTF_8); 54 reader = new BufferedReader(reader); 55 56 Writer output = new OutputStreamWriter(outstream, StandardCharsets.UTF_8); 57 output = new BufferedWriter(output); 58 59 StringBuffer input = new StringBuffer(); 60 int character; 61 while ((character = reader.read()) != -1) { 62 char ch = (char) character; 63 if (Character.isWhitespace(ch)) { 64 stemmer.setCurrent(input.toString()); 65 stemmer.stem(); 66 output.write(stemmer.getCurrent()); 67 output.write('\n'); 68 input.delete(0, input.length()); 69 } else { 70 input.append(ch < 127 ? Character.toLowerCase(ch) : ch); 71 } 72 } 73 output.flush(); 74 } 75 } 76