///|
fn split_words(s : String) -> Array[String] {
s
.split(" ")
.filter_map(fn(part) {
let word = part.trim().to_owned()
if word == "" {
None
} else {
Some(word)
}
})
.to_array()
}
///|
fn parse_int(text : String) -> Int raise GenBankError {
let s = text.trim().to_owned()
let mut value = 0
for ch in s {
if ch < '0' || ch > '9' {
raise GenBankError::InvalidNumber(s)
}
value = value * 10 + (ch.to_int() - '0'.to_int())
}
value
}
///|
fn field_value(line : String, name : String) -> String? {
if line.has_prefix(name) {
Some(
line
.unsafe_substring(start=name.length(), end=line.length())
.trim()
.to_owned(),
)
} else {
None
}
}