///|
/// 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 }
}