diff options
Diffstat (limited to 'crates/ra_syntax/src/ast/mod.rs')
-rw-r--r-- | crates/ra_syntax/src/ast/mod.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/crates/ra_syntax/src/ast/mod.rs b/crates/ra_syntax/src/ast/mod.rs index c033263a1..3aa11b9dd 100644 --- a/crates/ra_syntax/src/ast/mod.rs +++ b/crates/ra_syntax/src/ast/mod.rs | |||
@@ -65,6 +65,24 @@ pub trait AttrsOwner<'a>: AstNode<'a> { | |||
65 | } | 65 | } |
66 | } | 66 | } |
67 | 67 | ||
68 | pub trait DocCommentsOwner<'a>: AstNode<'a> { | ||
69 | fn doc_comments(self) -> AstChildren<'a, Comment<'a>> { children(self) } | ||
70 | |||
71 | /// Returns the textual content of a doc comment block as a single string. | ||
72 | /// That is, strips leading `///` and joins lines | ||
73 | fn doc_comment_text(self) -> String { | ||
74 | self.doc_comments() | ||
75 | .map(|comment| { | ||
76 | let prefix = comment.prefix(); | ||
77 | let trimmed = comment.text().as_str() | ||
78 | .trim() | ||
79 | .trim_start_matches(prefix) | ||
80 | .trim_start(); | ||
81 | trimmed.to_owned() | ||
82 | }).join("\n") | ||
83 | } | ||
84 | } | ||
85 | |||
68 | impl<'a> FnDef<'a> { | 86 | impl<'a> FnDef<'a> { |
69 | pub fn has_atom_attr(&self, atom: &str) -> bool { | 87 | pub fn has_atom_attr(&self, atom: &str) -> bool { |
70 | self.attrs().filter_map(|x| x.as_atom()).any(|x| x == atom) | 88 | self.attrs().filter_map(|x| x.as_atom()).any(|x| x == atom) |