///|
pub fn compare_stable_names(left : String, right : String) -> Int {
let left_lower = ascii_lower(left)
let right_lower = ascii_lower(right)
let folded = compare_ascii(left_lower, right_lower)
if folded != 0 {
folded
} else {
compare_ascii(left, right)
}
}
///|
fn ascii_lower(text : String) -> String {
let out = StringBuilder::new()
for ch in text {
out.write_char(lower_char(ch))
}
out.to_string()
}
///|
fn compare_ascii(left : String, right : String) -> Int {
let limit = if left.length() < right.length() {
left.length()
} else {
right.length()
}
for i in 0.. right[i] {
return 1
}
}
if left.length() < right.length() {
-1
} else if left.length() > right.length() {
1
} else {
0
}
}