package com.github.liblevenshtein.transducer;
import java.io.Serializable;
import lombok.Data;
import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
/**
* This wrapper around {@link LazyTransducerCollection}, which handles all the
* heavy lifting.
*
* @author Dylon Edwards
* @param <DictionaryNode> Kind of nodes of the dictionary automaton.
* @param <CandidateType> Kind of the spelling candidates returned from the
* dictionary.
* @since 2.1.0
*/
@Data
@RequiredArgsConstructor
public class Transducer<DictionaryNode, CandidateType>
implements ITransducer<CandidateType>, Serializable {
private static final long serialVersionUID = 1L;
/**
* Attributes required for this transducer to search the dictionary.
*/
@Getter
@NonNull
private TransducerAttributes<DictionaryNode, CandidateType> attributes;
/**
* {@inheritDoc}
*/
@Override
public Iterable<CandidateType> transduce(@NonNull final String term) {
return transduce(term, attributes.maxDistance());
}
/**
* {@inheritDoc}
*/
@Override
public Iterable<CandidateType> transduce(
@NonNull final String term,
final int maxDistance) {
return new LazyTransducerCollection<DictionaryNode, CandidateType>(
term, maxDistance, attributes);
}
}