#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()) { if (emits != null && !emits.isEmpty()) {
for (final String emit : emits) { for (final String emit : emits) {
emitted = emitHandler.emit(new Emit(position - emit.length() + 1, position, emit)) || emitted; 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; package org.ahocorasick.trie;
import org.ahocorasick.trie.handler.AbstractStatefulEmitHandler;
import org.ahocorasick.trie.handler.EmitHandler; import org.ahocorasick.trie.handler.EmitHandler;
import org.ahocorasick.trie.handler.StatefulEmitHandler; import org.ahocorasick.trie.handler.StatefulEmitHandler;
import org.junit.Test; import org.junit.Test;
@ -110,8 +111,7 @@ public class TrieTest {
.stopOnHit() .stopOnHit()
.build(); .build();
StatefulEmitHandler testEmitHandler = new StatefulEmitHandler() { StatefulEmitHandler testEmitHandler = new AbstractStatefulEmitHandler() {
private final List<Emit> emits = new ArrayList<>();
boolean first = true; boolean first = true;
@Override @Override
@ -121,14 +121,10 @@ public class TrieTest {
first = false; first = false;
return false; return false;
} }
this.emits.add(emit); addEmit(emit);
return true; return true;
} }
@Override
public List<Emit> getEmits() {
return this.emits;
}
}; };
trie.parseText("ushers", testEmitHandler); trie.parseText("ushers", testEmitHandler);