func anchor_for(signature: String) -> StringConverts a rendered declaration signature into its deterministic HTML anchor.
ASCII letters are lowercased, runs of other bytes become one hyphen, and leading or trailing separators are omitted.
View Source
pub func anchor_for(signature: String) -> String {
let bytes = signature.utf8()
let result: [Byte] = []
let separating = false
let index = 0
loop index < bytes.count() {
let byte = bytes.at(index: index)
let value = byte._toInt()
let is_upper = value >= 65 && value <= 90
let is_lower = value >= 97 && value <= 122
let is_digit = value >= 48 && value <= 57
if is_upper || is_lower || is_digit {
if separating && result.is_empty() == false { result.push(45._toByte()) }
result.push(if is_upper { (value + 32)._toByte() } else { byte })
separating = false
} else {
separating = true
}
index = index + 1
}
String.from_bytes(bytes: result)
}