From ac3722a74d4a4f55263dcb8dd6f87c0292289f12 Mon Sep 17 00:00:00 2001 From: Nikita Revenco <154856872+NikitaRevenco@users.noreply.github.com> Date: Sat, 11 Jan 2025 17:51:45 +0000 Subject: [PATCH] refactor: extract has_camel_transition function --- helix-core/src/case_conversion.rs | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/helix-core/src/case_conversion.rs b/helix-core/src/case_conversion.rs index 2a67416cc..4403db301 100644 --- a/helix-core/src/case_conversion.rs +++ b/helix-core/src/case_conversion.rs @@ -10,6 +10,11 @@ pub fn simple_case_conversion( *buf = text.map(|ch| transform_char(&ch)).collect(); } +/// Whether there is a camelCase transition, such as at 'l' -> 'C' +fn has_camel_transition(prev: Option, current: char) -> bool { + current.is_uppercase() && prev.is_some_and(|ch| ch.is_lowercase()) +} + pub fn smart_case_conversion( chars: impl Iterator, buf: &mut Tendril, @@ -31,11 +36,7 @@ pub fn smart_case_conversion( for current in chars.skip_while(|ch| ch.is_whitespace()) { if current.is_alphanumeric() { - // "camelCase" => transition at 'l' -> 'C' - let has_camel_transition = - current.is_uppercase() && prev.is_some_and(|ch| ch.is_lowercase()); - - if has_camel_transition { + if has_camel_transition(prev, current) { add_separator_if_needed(prev, buf); should_capitalize_current = true; } @@ -62,25 +63,23 @@ pub fn separator_case_conversion( ) { let mut prev: Option = None; - for c in text.skip_while(|ch| ch.is_whitespace()) { - if !c.is_alphanumeric() { - prev = Some(c); + for current in text.skip_while(|ch| ch.is_whitespace()) { + if !current.is_alphanumeric() { + prev = Some(current); continue; } - // "camelCase" => transition at 'l' -> 'C' - let has_camel_transition = prev.is_some_and(|p| p.is_lowercase()) && c.is_uppercase(); // "email@somewhere" => transition at 'l' -> '@' // first character must not be separator, e.g. @emailSomewhere should not become -email-somewhere let has_alphanum_transition = !prev.is_some_and(|p| p.is_alphanumeric()) && !buf.is_empty(); - if has_camel_transition || has_alphanum_transition { + if has_camel_transition(prev, current) || has_alphanum_transition { buf.push(separator); } - buf.push(c.to_ascii_lowercase()); + buf.push(current.to_ascii_lowercase()); - prev = Some(c); + prev = Some(current); } }