#53 Added AbstractStatefulEmitHandler, test shows the example of usage.

This commit is contained in:
robert-bor 2017-05-15 20:51:58 +02:00
parent ea88eb987a
commit d9a10a475a
No known key found for this signature in database
GPG Key ID: 6C5195D11618804F
3 changed files with 27 additions and 8 deletions

View File

@ -286,7 +286,9 @@ public class Trie {
if (emits != null && !emits.isEmpty()) {
for (final String emit : emits) {
emitted = emitHandler.emit(new Emit(position - emit.length() + 1, position, emit)) || emitted;
if(emitted && trieConfig.isStopOnHit()) break;
if (emitted && trieConfig.isStopOnHit()) {
break;
}
}
}

View File

@ -0,0 +1,21 @@
package org.ahocorasick.trie.handler;
import java.util.ArrayList;
import java.util.List;
import org.ahocorasick.trie.Emit;
public abstract class AbstractStatefulEmitHandler implements StatefulEmitHandler {
private final List<Emit> emits = new ArrayList<>();
public void addEmit(final Emit emit) {
this.emits.add(emit);
}
@Override
public List<Emit> getEmits() {
return this.emits;
}
}

View File

@ -1,5 +1,6 @@
package org.ahocorasick.trie;
import org.ahocorasick.trie.handler.AbstractStatefulEmitHandler;
import org.ahocorasick.trie.handler.EmitHandler;
import org.ahocorasick.trie.handler.StatefulEmitHandler;
import org.junit.Test;
@ -110,8 +111,7 @@ public class TrieTest {
.stopOnHit()
.build();
StatefulEmitHandler testEmitHandler = new StatefulEmitHandler() {
private final List<Emit> emits = new ArrayList<>();
StatefulEmitHandler testEmitHandler = new AbstractStatefulEmitHandler() {
boolean first = true;
@Override
@ -121,14 +121,10 @@ public class TrieTest {
first = false;
return false;
}
this.emits.add(emit);
addEmit(emit);
return true;
}
@Override
public List<Emit> getEmits() {
return this.emits;
}
};
trie.parseText("ushers", testEmitHandler);