Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 5e66e49

Browse files
committed
move required_hashes into utils
1 parent 03bc46f commit 5e66e49

File tree

3 files changed

+27
-27
lines changed

3 files changed

+27
-27
lines changed

crates/ide-assists/src/handlers/desugar_doc_comment.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@ use syntax::{
55
AstToken, TextRange,
66
};
77

8-
use crate::{AssistContext, AssistId, AssistKind, Assists};
9-
10-
use super::{
11-
convert_comment_block::{line_comment_text, relevant_line_comments},
12-
raw_string::required_hashes,
8+
use crate::{
9+
handlers::convert_comment_block::{line_comment_text, relevant_line_comments},
10+
utils::required_hashes,
11+
AssistContext, AssistId, AssistKind, Assists,
1312
};
1413

1514
// Assist: desugar_doc_comment

crates/ide-assists/src/handlers/raw_string.rs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::borrow::Cow;
22

33
use syntax::{ast, ast::IsString, AstToken, TextRange, TextSize};
44

5-
use crate::{AssistContext, AssistId, AssistKind, Assists};
5+
use crate::{utils::required_hashes, AssistContext, AssistId, AssistKind, Assists};
66

77
// Assist: make_raw_string
88
//
@@ -155,33 +155,12 @@ pub(crate) fn remove_hash(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<
155155
})
156156
}
157157

158-
pub(crate) fn required_hashes(s: &str) -> usize {
159-
let mut res = 0usize;
160-
for idx in s.match_indices('"').map(|(i, _)| i) {
161-
let (_, sub) = s.split_at(idx + 1);
162-
let n_hashes = sub.chars().take_while(|c| *c == '#').count();
163-
res = res.max(n_hashes + 1)
164-
}
165-
res
166-
}
167-
168158
#[cfg(test)]
169159
mod tests {
170160
use crate::tests::{check_assist, check_assist_not_applicable, check_assist_target};
171161

172162
use super::*;
173163

174-
#[test]
175-
fn test_required_hashes() {
176-
assert_eq!(0, required_hashes("abc"));
177-
assert_eq!(0, required_hashes("###"));
178-
assert_eq!(1, required_hashes("\""));
179-
assert_eq!(2, required_hashes("\"#abc"));
180-
assert_eq!(0, required_hashes("#abc"));
181-
assert_eq!(3, required_hashes("#ab\"##c"));
182-
assert_eq!(5, required_hashes("#ab\"##\"####c"));
183-
}
184-
185164
#[test]
186165
fn make_raw_string_target() {
187166
check_assist_target(

crates/ide-assists/src/utils.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -758,3 +758,25 @@ pub(crate) fn convert_param_list_to_arg_list(list: ast::ParamList) -> ast::ArgLi
758758
}
759759
make::arg_list(args)
760760
}
761+
762+
/// Calculate the number of hashes required for a raw string containing `s`
763+
pub(crate) fn required_hashes(s: &str) -> usize {
764+
#[test]
765+
fn test_required_hashes() {
766+
assert_eq!(0, required_hashes("abc"));
767+
assert_eq!(0, required_hashes("###"));
768+
assert_eq!(1, required_hashes("\""));
769+
assert_eq!(2, required_hashes("\"#abc"));
770+
assert_eq!(0, required_hashes("#abc"));
771+
assert_eq!(3, required_hashes("#ab\"##c"));
772+
assert_eq!(5, required_hashes("#ab\"##\"####c"));
773+
}
774+
775+
let mut res = 0usize;
776+
for idx in s.match_indices('"').map(|(i, _)| i) {
777+
let (_, sub) = s.split_at(idx + 1);
778+
let n_hashes = sub.chars().take_while(|c| *c == '#').count();
779+
res = res.max(n_hashes + 1)
780+
}
781+
res
782+
}

0 commit comments

Comments
 (0)