private static Predicate <VerbRaw> PrepareFilter(VerbAspect aspect) { if (aspect == VerbAspect.Undefined) { return((item) => true); } return((item) => item.Aspect == aspect); }
/// <summary> /// Поиск одного точного совпадения. Null - если не найдено. /// </summary> public static Verb FindOne(string sourceForm, VerbAspect aspect = VerbAspect.Undefined) { var searchWord = PrepareWord(sourceForm); var res = items.FindOne(new VerbRaw() { Word = searchWord }, new StringReverseComparer <VerbRaw>(), PrepareFilter(aspect)); if (res.Word == null) { return(null); } return(new Verb(res, sourceForm)); }
/// <summary> /// Поиск по точному или приблизительному совпадению /// </summary> public static Verb FindSimilar(string sourceForm, VerbAspect aspect = VerbAspect.Undefined) { var searchWord = PrepareWord(sourceForm); var res = items.FindSimilar(new VerbRaw() { Word = searchWord }, new StringReverseComparer <VerbRaw>(), PrepareFilter(aspect)); if (res.Word == null) { return(null); } return(new Verb { Word = sourceForm, SchemaIndex = res.SchemaIndex, Aspect = res.Aspect, Inexact = res.Word != searchWord }); }