core :: Buffer :: snake_case
self
and converts it to snake caseSEE: to_snake_case
# Takes a camel case `self` and converts it to snake case
#
# SEE: `to_snake_case`
fun snake_case do
if self.is_lower then return
var prev_is_lower = false
var prev_is_upper = false
var i = 0
while i < length do
var char = chars[i]
if char.is_lower then
prev_is_lower = true
prev_is_upper = false
else if char.is_upper then
if prev_is_lower then
insert_char('_', i)
i += 1
else if prev_is_upper and i + 1 < length and self[i + 1].is_lower then
insert_char('_', i)
i += 1
end
self[i] = char.to_lower
prev_is_lower = false
prev_is_upper = true
else
prev_is_lower = false
prev_is_upper = false
end
i += 1
end
end
lib/core/text/abstract_text.nit:1795,2--1826,4