Index: src/test/org/apache/lucene/analysis/sinks/TokenRangeSinkTokenizerTest.java
===================================================================
--- src/test/org/apache/lucene/analysis/sinks/TokenRangeSinkTokenizerTest.java	(revision 0)
+++ src/test/org/apache/lucene/analysis/sinks/TokenRangeSinkTokenizerTest.java	(revision 0)
@@ -0,0 +1,54 @@
+package org.apache.lucene.analysis.sinks;
+
+/**
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import junit.framework.TestCase;
+import org.apache.lucene.analysis.TeeTokenFilter;
+import org.apache.lucene.analysis.WhitespaceTokenizer;
+import org.apache.lucene.analysis.Token;
+
+import java.io.StringReader;
+import java.io.IOException;
+
+public class TokenRangeSinkTokenizerTest extends TestCase {
+
+
+  public TokenRangeSinkTokenizerTest(String s) {
+    super(s);
+  }
+
+  protected void setUp() {
+  }
+
+  protected void tearDown() {
+
+  }
+
+  public void test() throws IOException {
+    TokenRangeSinkTokenizer rangeToks = new TokenRangeSinkTokenizer(2, 4);
+    String test = "The quick red fox jumped over the lazy brown dogs";
+    TeeTokenFilter tee = new TeeTokenFilter(new WhitespaceTokenizer(new StringReader(test)), rangeToks);
+    Token tok = null;
+    int count = 0;
+    while ((tok = tee.next()) != null){
+      assertTrue("tok is null and it shouldn't be", tok != null);
+      count++;
+    }
+    assertTrue(count + " does not equal: " + 10, count == 10);
+    assertTrue("rangeToks Size: " + rangeToks.getTokens().size() + " is not: " + 2, rangeToks.getTokens().size() == 2);
+  }
+}
\ No newline at end of file

Property changes on: src/test/org/apache/lucene/analysis/sinks/TokenRangeSinkTokenizerTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Index: src/java/org/apache/lucene/analysis/sinks/TokenRangeSinkTokenizer.java
===================================================================
--- src/java/org/apache/lucene/analysis/sinks/TokenRangeSinkTokenizer.java	(revision 0)
+++ src/java/org/apache/lucene/analysis/sinks/TokenRangeSinkTokenizer.java	(revision 0)
@@ -0,0 +1,55 @@
+package org.apache.lucene.analysis.sinks;
+
+import org.apache.lucene.analysis.SinkTokenizer;
+import org.apache.lucene.analysis.Token;
+
+import java.io.IOException;
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/**
+ * Counts the tokens as they go by and saves to the internal list those between the range of lower and upper, exclusive of upper
+ *
+ **/
+public class TokenRangeSinkTokenizer extends SinkTokenizer {
+  private int lower;
+  private int upper;
+  private int count;
+
+  public TokenRangeSinkTokenizer(int lower, int upper) {
+    this.lower = lower;
+    this.upper = upper;
+  }
+
+  public TokenRangeSinkTokenizer(int initCap, int lower, int upper) {
+    super(initCap);
+    this.lower = lower;
+    this.upper = upper;
+  }
+
+  public void add(Token t) {
+    if (count >= lower && count < upper){
+      super.add(t);
+    }
+    count++;
+  }
+
+  public void reset() throws IOException {
+    count = 0;
+  }
+}

Property changes on: src/java/org/apache/lucene/analysis/sinks/TokenRangeSinkTokenizer.java
___________________________________________________________________
Name: svn:eol-style
   + native

Index: src/java/org/apache/lucene/analysis/sinks/package.html
===================================================================
--- src/java/org/apache/lucene/analysis/sinks/package.html	(revision 0)
+++ src/java/org/apache/lucene/analysis/sinks/package.html	(revision 0)
@@ -0,0 +1,20 @@
+<HTML>
+ <!--
+ * Created by IntelliJ IDEA.
+ * User: Grant Ingersoll
+ * Date: Dec 4, 2007
+ * Time: 11:02:41 AM
+ * $Id:$
+ * Copyright 2007.  Center For Natural Language Processing
+ --><HEAD>
+    <TITLE>org.apache.lucene.analysis.sinks</TITLE>
+</HEAD>
+<BODY>
+<DIV>Implementations of the SinkTokenizer that might be useful.
+</DIV>
+<DIV>&nbsp;</DIV>
+<DIV align="center">
+Copyright &copy; 2007 <A HREF="http://www.apache.org">Apache Software Foundation</A>
+</DIV>
+</BODY>
+</HTML>
\ No newline at end of file

Property changes on: src/java/org/apache/lucene/analysis/sinks/package.html
___________________________________________________________________
Name: svn:eol-style
   + native

