///|
/// Parse the LOCUS line into its stable fields.
pub fn parse_locus(line : String) -> Locus raise GenBankError {
  let rest = match field_value(line, "LOCUS") {
    Some(value) => value
    None => raise GenBankError::InvalidLocus(line)
  }
  let parts = split_words(rest)
  if parts.length() < 6 {
    raise GenBankError::InvalidLocus(line)
  }
  let name = parts[0]
  let length = parse_int(parts[1])
  let molecule_type = parts[3]
  let date = parts.last().unwrap()
  let topology = if parts.length() >= 7 { parts[4] } else { "" }
  let division = if parts.length() >= 7 { parts[5] } else { parts[4] }
  { name, length, molecule_type, topology, division, date }
}