public bool WordRequiresCorrection(IDefinitionState definitionState) { var current = definitionState.CurrentDefinition; var isContractionWithoutApostrophe = current.Type == WordType.Contraction && !current.Word.Equals(definitionState.CurrentWord, StringComparison.CurrentCultureIgnoreCase); return(isContractionWithoutApostrophe); }
public bool WordRequiresCorrection(IDefinitionState definitionState) { var current = definitionState.CurrentDefinition; var isRegularNounWithoutApostrophe = current.Type == WordType.Noun && !(current.Word + current.Suffix).Equals(definitionState.CurrentWord, StringComparison.CurrentCultureIgnoreCase); return(isRegularNounWithoutApostrophe); }
public IEnumerable <Correction> GetWordCorrections(IDefinitionState definitionState) { if (definitionState == null) { throw new ArgumentNullException(nameof(definitionState)); } var needCorrection = _correctionDefinitions.Where(definition => definition.WordRequiresCorrection(definitionState)); return(needCorrection.Select(definition => CreateCorrection(definitionState, definition.CorrectionType))); }
public bool WordRequiresCorrection(IDefinitionState definitionState) { var current = definitionState.CurrentDefinition; var isProperNounSuffixedByS = current.Type == WordType.ProperNoun && current.Suffix.Equals("s", StringComparison.CurrentCultureIgnoreCase); if (isProperNounSuffixedByS) { var nextWordIsNoun = definitionState.NextDefinition.Type == WordType.Noun; var previousWordIsIs = definitionState.PreviousWord.Equals("is", StringComparison.CurrentCultureIgnoreCase); if (nextWordIsNoun || previousWordIsIs) { var currentWord = definitionState.CurrentWord; var nextToLastCharacter = currentWord.Substring(currentWord.Length - 2, 1); if (nextToLastCharacter != "'") { return(true); } } } return(false); }
private Correction CreateCorrection(IDefinitionState definitionState, CorrectionType correctionType) => new Correction(correctionType, definitionState.SourceString, definitionState.CurrentWord);