parse static method

EllaTime parse(
  1. String value
)

Implementation

static EllaTime parse(String value)
{
  value = value.toLowerCase();
  MeridiemMode meridiemMode = MeridiemMode.AnteMeridiem;
  if ( value.contains("pm") ) {
    meridiemMode = MeridiemMode.PostMeridiem;
  }

  // Filter out am/pm noise first!
  value = value.replaceAll(_REMOVE_CHARS_REGEXP, ella.EMPTY_STRING);

  List<String> parts;

  if ( value.contains(".") ) {
    parts = value.split(".");
  }
  else if ( value.contains(":") ) {
    parts = value.split(":");
  }
  else {
    // Split support when colon is missing.
    parts = [];
    if (value.length < 3) {
      parts.add(value); // assume entire value is the hour.
      parts.add( 0.toString() ); // minutes must be zero in this case.
    }
    else if (value.length == 3) {
      parts.add( value.substring(0, 1) );
      parts.add( value.substring(2, 3) );
    }
    else if (value.length == 4) {
      parts.add( value.substring(0, 2) );
      parts.add( value.substring(2, 4) );
    }
    else {
      throw new Exception("Bad format");
    }
  }

  // Parse hours.
  String hoursPart = parts[0];
  int hours = int.parse(hoursPart);

  // Parse minutes.
  String minutesPart = parts[1];
  int minutes = int.parse(minutesPart);

  TwelveHourTime model = new TwelveHourTime(meridiemMode, hours, minutes);

  return model.toEllaTime();
}