anchor_for

func anchor_for(signature: String) -> String

Converts 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)
}