#53 Added AbstractStatefulEmitHandler, test shows the example of usage.
This commit is contained in:
parent
ea88eb987a
commit
d9a10a475a
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user