Refactor skylark format internals

Rename some methods to avoid clashes.
Add function formattable to create lazily-formatted objects,
remove now unused strFormattable and reprFormattable.
Also some whitespace cleanup.

--
MOS_MIGRATED_REVID=101459565
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
index 3c89024..7e5e9e0 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
@@ -37,7 +37,7 @@
 public final class Printer {
 
   private static final char SKYLARK_QUOTATION_MARK = '"';
-  
+
   private Printer() {
   }
 
@@ -55,7 +55,7 @@
   public static String str(Object x) {
     return str(x, SKYLARK_QUOTATION_MARK);
   }
-  
+
   /**
    * Get an official representation of object x.
    * For regular data structures, the value should be parsable back into an equal data structure.
@@ -69,7 +69,7 @@
   public static String repr(Object x) {
     return repr(x, SKYLARK_QUOTATION_MARK);
   }
-  
+
   // In absence of a Python naming tradition, the write() vs print() function names
   // follow the Lisp tradition: print() displays the informal representation (as in Python str)
   // whereas write() displays a readable representation (as in Python repr).
@@ -91,11 +91,11 @@
     }
     return write(buffer, o, quotationMark);
   }
-  
+
   public static Appendable print(Appendable buffer, Object o) {
     return print(buffer, o, SKYLARK_QUOTATION_MARK);
   }
-  
+
   /**
    * Print an official representation of object x.
    * For regular data structures, the value should be parsable back into an equal data structure.
@@ -202,7 +202,7 @@
   public static Appendable write(Appendable buffer, Object o) {
     return write(buffer, o, SKYLARK_QUOTATION_MARK);
   }
-  
+
   // Throughout this file, we transform IOException into AssertionError.
   // During normal operations, we only use in-memory Appendable-s that
   // cannot cause an IOException.
@@ -323,7 +323,7 @@
     return printList(
         buffer, list, before, separator, after, singletonTerminator, SKYLARK_QUOTATION_MARK);
   }
-  
+
   /**
    * Print a Skylark list or tuple of object representations
    * @param buffer an appendable buffer onto which to write the list.
@@ -380,67 +380,28 @@
   }
 
   /**
-   * Convert BUILD language objects to Formattable so JDK can render them correctly.
-   * Don't do this for numeric or string types because we want %d, %x, %s to work.
-   * This function is intended for use in assertions such as Precondition.checkArgument
-   * so that you only pay the cost of computing the string when the assertion passes.
+   * Perform Python-style string formatting, lazily.
+   *
+   * @param pattern a format string.
+   * @param arguments positional arguments.
+   * @return the formatted string.
    */
-  public static Object strFormattable(final Object o, final char quotationMark) {
-    if (o instanceof Integer || o instanceof Double || o instanceof String) {
-      return o;
-    } else {
-      return new Formattable() {
+  public static Formattable formattable(final String pattern, Object... arguments)
+      throws IllegalFormatException {
+    final ImmutableList<Object> args = ImmutableList.copyOf(arguments);
+    return new Formattable() {
         @Override
         public String toString() {
-          return str(o, quotationMark);
+          return formatToString(pattern, args);
         }
 
         @Override
         public void formatTo(Formatter formatter, int flags, int width, int precision) {
-          print(formatter.out(), o, quotationMark);
+          Printer.formatTo(formatter.out(), pattern, args);
         }
       };
-    }
   }
 
-  public static Object strFormattable(final Object o) {
-    return strFormattable(o, SKYLARK_QUOTATION_MARK);
-  }
-  
-  /**
-   * Convert BUILD language objects to Formattable so JDK can render them correctly.
-   * Don't do this for numeric or string types because we want %d, %x, %s to work.
-   * This function is intended for use in assertions such as Precondition.checkArgument
-   * so that you only pay the cost of computing the string when the assertion passes.
-   */
-  public static Object reprFormattable(final Object o, final char quotationMark) {
-    if (o instanceof Integer || o instanceof Double) {
-      return o;
-    } else {
-      return new Formattable() {
-        @Override
-        public String toString() {
-          return repr(o);
-        }
-
-        @Override
-        public void formatTo(Formatter formatter, int flags, int width, int precision) {
-          write(formatter.out(), o, quotationMark);
-        }
-      };
-    }
-  }
-
-  public static Object reprFormattable(final Object o) {
-    return reprFormattable(o, SKYLARK_QUOTATION_MARK);
-  }
-  
-  
-  /*
-   * N.B. MissingFormatWidthException is the only kind of IllegalFormatException
-   * whose constructor can take and display arbitrary error message, hence its use below.
-   */
-
   /**
    * Perform Python-style string formatting.
    *
@@ -448,20 +409,21 @@
    * @param arguments a tuple containing positional arguments.
    * @return the formatted string.
    */
-  public static String formatString(String pattern, List<?> arguments)
+  public static String format(String pattern, Object... arguments)
       throws IllegalFormatException {
-    return format(new StringBuilder(), pattern, arguments).toString();
+    return formatToString(pattern, ImmutableList.copyOf(arguments));
   }
 
   /**
    * Perform Python-style string formatting.
    *
    * @param pattern a format string.
-   * @param arguments positional arguments.
+   * @param arguments a tuple containing positional arguments.
    * @return the formatted string.
    */
-  public static String format(String pattern, Object... arguments) throws IllegalFormatException {
-    return formatString(pattern, ImmutableList.copyOf(arguments));
+  public static String formatToString(String pattern, List<?> arguments)
+      throws IllegalFormatException {
+    return formatTo(new StringBuilder(), pattern, arguments).toString();
   }
 
   /**
@@ -474,7 +436,7 @@
    * @return the buffer, in fluent style.
    */
   // TODO(bazel-team): support formatting arguments, and more complex Python patterns.
-  public static Appendable format(Appendable buffer, String pattern, List<?> arguments)
+  public static Appendable formatTo(Appendable buffer, String pattern, List<?> arguments)
       throws IllegalFormatException {
     // N.B. MissingFormatWidthException is the only kind of IllegalFormatException
     // whose constructor can take and display arbitrary error message, hence its use below.