예제 #1
0
            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)));
            }
예제 #2
0
            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)));
            }