Avoid possibility of the default Locale interfering with lower-casing input.

Instead of String.toLowerCase(), leverage Guava's Ascii.toLowerCase().

Also, factor out common text representations of enabled/disabled values for
boolean and tri-state flags, and simplify corresponding implementations.

https://help.semmle.com/wiki/pages/viewpage.action?pageId=29393598
https://www.w3.org/International/wiki/Case_folding

RELNOTES: none
PiperOrigin-RevId: 318499276
diff --git a/src/main/java/com/google/devtools/common/options/Converters.java b/src/main/java/com/google/devtools/common/options/Converters.java
index e6884fd..10bd836 100644
--- a/src/main/java/com/google/devtools/common/options/Converters.java
+++ b/src/main/java/com/google/devtools/common/options/Converters.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.common.options;
 
+import com.google.common.base.Ascii;
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import com.google.common.cache.CacheBuilderSpec;
@@ -31,6 +32,12 @@
 /** Some convenient converters used by blaze. Note: These are specific to blaze. */
 public final class Converters {
 
+  private static final ImmutableList<String> ENABLED_REPS =
+      ImmutableList.of("true", "1", "yes", "t", "y");
+
+  private static final ImmutableList<String> DISABLED_REPS =
+      ImmutableList.of("false", "0", "no", "f", "n");
+
   /** Standard converter for booleans. Accepts common shorthands/synonyms. */
   public static class BooleanConverter implements Converter<Boolean> {
     @Override
@@ -38,19 +45,11 @@
       if (input == null) {
         return false;
       }
-      input = input.toLowerCase();
-      if (input.equals("true")
-          || input.equals("1")
-          || input.equals("yes")
-          || input.equals("t")
-          || input.equals("y")) {
+      input = Ascii.toLowerCase(input);
+      if (ENABLED_REPS.contains(input)) {
         return true;
       }
-      if (input.equals("false")
-          || input.equals("0")
-          || input.equals("no")
-          || input.equals("f")
-          || input.equals("n")) {
+      if (DISABLED_REPS.contains(input)) {
         return false;
       }
       throw new OptionsParsingException("'" + input + "' is not a boolean");
@@ -133,22 +132,14 @@
       if (input == null) {
         return TriState.AUTO;
       }
-      input = input.toLowerCase();
+      input = Ascii.toLowerCase(input);
       if (input.equals("auto")) {
         return TriState.AUTO;
       }
-      if (input.equals("true")
-          || input.equals("1")
-          || input.equals("yes")
-          || input.equals("t")
-          || input.equals("y")) {
+      if (ENABLED_REPS.contains(input)) {
         return TriState.YES;
       }
-      if (input.equals("false")
-          || input.equals("0")
-          || input.equals("no")
-          || input.equals("f")
-          || input.equals("n")) {
+      if (DISABLED_REPS.contains(input)) {
         return TriState.NO;
       }
       throw new OptionsParsingException("'" + input + "' is not a boolean");