Perhaps <T extends CharSequence>? ajs6f
> On Feb 23, 2018, at 12:12 PM, Gary Gregory <garydgreg...@gmail.com> wrote: > > On Fri, Feb 23, 2018 at 10:05 AM, Gary Gregory <garydgreg...@gmail.com> > wrote: > >> >> >> On Fri, Feb 23, 2018 at 10:04 AM, Gary Gregory <garydgreg...@gmail.com> >> wrote: >> >>> >>> >>> On Fri, Feb 23, 2018 at 7:03 AM, Matt Benson <mben...@apache.org> wrote: >>> >>>> On Feb 23, 2018 4:26 AM, "sebb" <seb...@gmail.com> wrote: >>>> >>>> On 23 February 2018 at 00:41, Gary Gregory <garydgreg...@gmail.com> >>>> wrote: >>>>> On Thu, Feb 22, 2018 at 4:27 PM, sebb <seb...@gmail.com> wrote: >>>>> >>>>>> On 22 February 2018 at 23:15, Gary Gregory <garydgreg...@gmail.com> >>>> wrote: >>>>>>> On Thu, Feb 22, 2018 at 4:11 PM, sebb <seb...@gmail.com> wrote: >>>>>>> >>>>>>>> On 22 February 2018 at 22:27, Gary Gregory <garydgreg...@gmail.com >>>>> >>>>>> wrote: >>>>>>>>> Use your imagination ;-) >>>>>>>> >>>>>>>> What would the new code look like? >>>>>> >>>>>> I mean the user code before and after the enum is introduced. >>>>>> >>>>> >>>>> I don't have code for the _before_ since I wrote the enum to avoid it. >>>>> >>>>> I have a different util class that gets called like this: >>>>> >>>>> HexDump(byte[] data, LetterCase letterCase, more details...) >>>> >>>> The above is only using the enum as a way to provide the requested >>>> type of transform. >>>> >>>> The important bit is the code that uses the enum to do the transform. >>>> >>>> >>>> Obviously the method body would call #toCaseString() passing a String and >>>> Locale as arguments. This question feels like trolling, as does the >>>> insinuation that true/false *might not* be less clear in intent than >>>> UPPER/LOWER, or vice versa as, again, we don't know what the hypothetical >>>> API author was thinking in the case of boolean. WTH >>>> >>> >>> Thanks Matt for pointing that out. The comment did feel trollish to me as >>> well but I choose not to engage. Aside from that I really like Sebb's >>> contributions to our community, his diligence and attention to detail. >>> I did not think I needed to make some pedantic point about an enum being >>> much better than a boolean to express letter case or toggles in general. >>> >>> >>>> The comment about Java 8 is fine as far as it goes, but doesn't really >>>> invalidate this as the method supplied can easily be used as a >>>> BiFunction. >>>> Gary, I'm thinking you might as well "underload" the method to pass the >>>> default Locale to the two-argument variant so then you also implement >>>> Function in the simple case. Then I'm sold. For a bonus you might provide >>>> char method variants as well. >>>> >>> >>> OK, sounds good. Like this then: >>> [https://pastebin.com/mJw2tDHj] >>> >> >> Without the @author tag of course. >> > > There is also CharBuffer... I only have use for String. > > Gary > > >> >> G >> >>> >>> import java.util.Locale; >>> >>> /** >>> * Enumerates letter cases and converts strings. >>> * >>> * @author <a href="mailto:ggreg...@rocketsoftware.com">Gary Gregory</a> >>> */ >>> public enum LetterCase { >>> >>> LOWER { >>> @Override >>> public char[] toCaseString(final char[] source, final Locale >>> locale) { >>> return String.valueOf(source).toLower >>> Case(locale).toCharArray(); >>> } >>> >>> @Override >>> public String toCaseString(final String source, final Locale >>> locale) { >>> return source.toLowerCase(locale); >>> } >>> >>> }, >>> UPPER { >>> @Override >>> public char[] toCaseString(final char[] source, final Locale >>> locale) { >>> return String.valueOf(source).toUpper >>> Case(locale).toCharArray(); >>> } >>> >>> @Override >>> public String toCaseString(final String source, final Locale >>> locale) { >>> return source.toUpperCase(locale); >>> } >>> }; >>> >>> /** >>> * Converts from the given {@code source} string to the case >>> specified by this enum using the default {@code locale}. >>> * >>> * @param source >>> * the string to convert >>> * @param locale >>> * the locale to use for conversion. >>> * @return a converted string. >>> */ >>> public char[] toCaseString(final char[] source) { >>> return toCaseString(source, Locale.getDefault()); >>> } >>> >>> /** >>> * Converts from the given {@code source} char[] to the case >>> specified by this enum using the given {@code locale}. >>> * >>> * @param source >>> * the char[] to convert >>> * @param locale >>> * the locale to use for conversion. >>> * @return a converted char[]. >>> */ >>> public abstract char[] toCaseString(char[] source, Locale locale); >>> >>> /** >>> * Converts from the given {@code source} string to the case >>> specified by this enum using the default {@code locale}. >>> * >>> * @param source >>> * the string to convert >>> * @param locale >>> * the locale to use for conversion. >>> * @return a converted string. >>> */ >>> public String toCaseString(final String source) { >>> return toCaseString(source, Locale.getDefault()); >>> } >>> >>> /** >>> * Converts from the given {@code source} string to the case >>> specified by this enum using the given {@code locale}. >>> * >>> * @param source >>> * the string to convert >>> * @param locale >>> * the locale to use for conversion. >>> * @return a converted string. >>> */ >>> public abstract String toCaseString(String source, Locale locale); >>> >>> } >>> >>> Gary >>> >>> >>>> Matt >>>> >>>> >>>>> This is much clearer than using a boolean for the letter case. >>>> >>>> YMMV >>>> >>>>> Gary >>>>> >>>>> >>>>>> >>>>>>>> >>>>>>> >>>>>>> I posted the code at the start of this thread... >>>>>>> >>>>>>> Gary >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> How does it compare with code that does not have the enum? >>>>>>>> >>>>>>>>> I use it in the following contexts: >>>>>>>>> - To pass to a hex dump method to configure where the alpha chars >>>>>> should >>>>>>>> be >>>>>>>>> in lower case or upper case. >>>>>>>>> - To configure a parameterized JUnit test class to configure the >>>> case >>>>>> of >>>>>>>>> HTTP headers and values. >>>>>>>>> - To normalize input >>>>>>>>> >>>>>>>>> Gary >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Feb 22, 2018 at 3:14 PM, Otto Fowler < >>>> ottobackwa...@gmail.com >>>>>>> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> What problem does it solve? >>>>>>>>>> >>>>>>>>>> On February 22, 2018 at 17:02:34, Gary Gregory ( >>>>>> garydgreg...@gmail.com) >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Does anyone think this is useful and general enough to add to >>>> Commons >>>>>>>>>> Text: >>>>>>>>>> >>>>>>>>>> /** >>>>>>>>>> * Enumerates letter cases and converts strings. >>>>>>>>>> * >>>>>>>>>> * @author <a href="mailto:ggreg...@rocketsoftware.com">Gary >>>>>> Gregory</a> >>>>>>>>>> */ >>>>>>>>>> public enum LetterCase { >>>>>>>>>> LOWER { >>>>>>>>>> @Override >>>>>>>>>> public String toCaseString(final String source, final Locale >>>>>>>>>> locale) { >>>>>>>>>> return source.toLowerCase(locale); >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> }, >>>>>>>>>> UPPER { >>>>>>>>>> @Override >>>>>>>>>> public String toCaseString(final String source, final Locale >>>>>>>>>> locale) { >>>>>>>>>> return source.toUpperCase(locale); >>>>>>>>>> } >>>>>>>>>> }; >>>>>>>>>> >>>>>>>>>> /** >>>>>>>>>> * Converts from the given {@code source} string to the case >>>> specified >>>>>>>>>> by this enum using the given {@code locale}. >>>>>>>>>> * >>>>>>>>>> * @param source >>>>>>>>>> * the string to convert >>>>>>>>>> * @param locale >>>>>>>>>> * the locale to use for conversion. >>>>>>>>>> * @return a converted string. >>>>>>>>>> */ >>>>>>>>>> public abstract String toCaseString(String source, Locale >>>> locale); >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> ? >>>>>>>>>> >>>>>>>>>> Thank you, >>>>>>>>>> Gary >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>>> ------------------------------------------------------------ >>>> --------- >>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>>>>>>> For additional commands, e-mail: dev-h...@commons.apache.org >>>>>>>> >>>>>>>> >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>>>>> For additional commands, e-mail: dev-h...@commons.apache.org >>>>>> >>>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>>> For additional commands, e-mail: dev-h...@commons.apache.org >>>> >>> >>> >> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org