///|
/// Parse a simple feature CSV: id,kind,nominal,lower,upper,datum.
pub fn parse_feature_csv(input : String) -> Array[Feature] raise {
let result = []
for line in input.split("\n") {
let fields = line.trim().split(",").to_array()
if fields.length() >= 6 && fields[0] != "id" {
let kind = match fields[1].trim() {
"hole" => FeatureKind::Hole
"shaft" => FeatureKind::Shaft
"plane" => FeatureKind::Plane
"slot" => FeatureKind::Slot
"circle" => FeatureKind::Circle
"cylinder" => FeatureKind::Cylinder
_ => FeatureKind::Datum
}
result.push({
id: fields[0].trim().to_owned(),
kind,
nominal: @string.parse_double(fields[2].trim()),
lower: @string.parse_double(fields[3].trim()),
upper: @string.parse_double(fields[4].trim()),
datum: fields[5].trim() == "true",
})
}
}
result
}