private string GenericTypeErrorMessage(Localizer localizer, string actualValueString, Maybe <string> maybeSomewhere) { if (stringToTarget.Count == 0) { return(maybeSomewhere.Match( whenNothing: () => localizer.Localize( PTypeErrorBuilder.NoLegalValuesError, actualValueString), whenJust: somewhere => localizer.Localize( PTypeErrorBuilder.NoLegalValuesErrorSomewhere, actualValueString, somewhere))); } string localizedKeysList; if (stringToTarget.Count == 1) { localizedKeysList = PTypeErrorBuilder.QuoteStringValue(stringToTarget.Keys.First()); } else { // TODO: escape characters in KeyedSet keys. IEnumerable <string> keys = stringToTarget.Keys.Take(stringToTarget.Count - 1).Select(PTypeErrorBuilder.QuoteStringValue); var lastKey = PTypeErrorBuilder.QuoteStringValue(stringToTarget.Keys.Last()); localizedKeysList = localizer.Localize( PTypeErrorBuilder.EnumerateWithOr, string.Join(", ", keys), lastKey); } return(maybeSomewhere.Match( whenNothing: () => PTypeErrorBuilder.GetLocalizedTypeErrorMessage( localizer, localizedKeysList, actualValueString), whenJust: somewhere => PTypeErrorBuilder.GetLocalizedTypeErrorSomewhereMessage( localizer, localizedKeysList, actualValueString, somewhere))); }
private string GenericTypeErrorMessage(Localizer localizer, string actualValueString, Maybe <string> maybeSomewhere) { if (stringToEnum.Count == 0) { return(maybeSomewhere.Match( whenNothing: () => localizer.Localize( PTypeErrorBuilder.NoLegalValuesError, actualValueString), whenJust: somewhere => localizer.Localize( PTypeErrorBuilder.NoLegalValuesErrorSomewhere, actualValueString, somewhere))); } string localizedValueList; if (stringToEnum.Count == 1) { localizedValueList = PTypeErrorBuilder.QuoteStringValue(stringToEnum.Keys.First()); } else { IEnumerable <string> enumValues = stringToEnum.Keys.Take(stringToEnum.Count - 1).Select(PTypeErrorBuilder.QuoteStringValue); var lastEnumValue = PTypeErrorBuilder.QuoteStringValue(stringToEnum.Keys.Last()); localizedValueList = localizer.Localize( PTypeErrorBuilder.EnumerateWithOr, string.Join(", ", enumValues), lastEnumValue); } return(maybeSomewhere.Match( whenNothing: () => PTypeErrorBuilder.GetLocalizedTypeErrorMessage( localizer, localizedValueList, actualValueString), whenJust: somewhere => PTypeErrorBuilder.GetLocalizedTypeErrorSomewhereMessage( localizer, localizedValueList, actualValueString, somewhere))); }