// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/**
 * General purpose string manipulation utilities.
 */
class StringUtils {
  /**
   * Returns either [str], or if [str] is null, the value of [defaultStr].
   */
  static String defaultString(String str, [String defaultStr='']) {
    return str === null ? defaultStr : str;
  }

  /** Parse string to a double, and handle null intelligently */
  static double parseDouble(String str, [double ifNull = null]) {
    return (str == null) ? ifNull : Math.parseDouble(str);
  }

  /** Parse string to a int, and handle null intelligently */
  static int parseInt(String str, [int ifNull = null]) {
    return (str == null) ? ifNull : Math.parseInt(str);
  }

  /** Parse bool to a double, and handle null intelligently */
  // TODO(jacobr): corelib should have a boolean parsing method
  static bool parseBool(String str, [bool ifNull = null]) {
    assert(str == null || str == 'true' || str == 'false');
    return (str == null) ? ifNull : (str == 'true');
  }
}
