diff options
author | Aleksey Kladov <[email protected]> | 2019-11-27 18:32:33 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-11-27 18:35:06 +0000 |
commit | 757e593b253b4df7e6fc8bf15a4d4f34c9d484c5 (patch) | |
tree | d972d3a7e6457efdb5e0c558a8350db1818d07ae /crates/ra_ide_api/src/display.rs | |
parent | d9a36a736bfb91578a36505e7237212959bb55fe (diff) |
rename ra_ide_api -> ra_ide
Diffstat (limited to 'crates/ra_ide_api/src/display.rs')
-rw-r--r-- | crates/ra_ide_api/src/display.rs | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/crates/ra_ide_api/src/display.rs b/crates/ra_ide_api/src/display.rs deleted file mode 100644 index 30617412a..000000000 --- a/crates/ra_ide_api/src/display.rs +++ /dev/null | |||
@@ -1,84 +0,0 @@ | |||
1 | //! This module contains utilities for turning SyntaxNodes and HIR types | ||
2 | //! into types that may be used to render in a UI. | ||
3 | |||
4 | mod function_signature; | ||
5 | mod navigation_target; | ||
6 | mod structure; | ||
7 | mod short_label; | ||
8 | |||
9 | use ra_syntax::{ | ||
10 | ast::{self, AstNode, AttrsOwner, NameOwner, TypeParamsOwner}, | ||
11 | SyntaxKind::{ATTR, COMMENT}, | ||
12 | }; | ||
13 | |||
14 | pub use function_signature::FunctionSignature; | ||
15 | pub use navigation_target::NavigationTarget; | ||
16 | pub use structure::{file_structure, StructureNode}; | ||
17 | |||
18 | pub(crate) use navigation_target::{description_from_symbol, docs_from_symbol, ToNav}; | ||
19 | pub(crate) use short_label::ShortLabel; | ||
20 | |||
21 | pub(crate) fn function_label(node: &ast::FnDef) -> String { | ||
22 | FunctionSignature::from(node).to_string() | ||
23 | } | ||
24 | |||
25 | pub(crate) fn const_label(node: &ast::ConstDef) -> String { | ||
26 | let label: String = node | ||
27 | .syntax() | ||
28 | .children_with_tokens() | ||
29 | .filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR)) | ||
30 | .map(|node| node.to_string()) | ||
31 | .collect(); | ||
32 | |||
33 | label.trim().to_owned() | ||
34 | } | ||
35 | |||
36 | pub(crate) fn type_label(node: &ast::TypeAliasDef) -> String { | ||
37 | let label: String = node | ||
38 | .syntax() | ||
39 | .children_with_tokens() | ||
40 | .filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR)) | ||
41 | .map(|node| node.to_string()) | ||
42 | .collect(); | ||
43 | |||
44 | label.trim().to_owned() | ||
45 | } | ||
46 | |||
47 | pub(crate) fn generic_parameters<N: TypeParamsOwner>(node: &N) -> Vec<String> { | ||
48 | let mut res = vec![]; | ||
49 | if let Some(type_params) = node.type_param_list() { | ||
50 | res.extend(type_params.lifetime_params().map(|p| p.syntax().text().to_string())); | ||
51 | res.extend(type_params.type_params().map(|p| p.syntax().text().to_string())); | ||
52 | } | ||
53 | res | ||
54 | } | ||
55 | |||
56 | pub(crate) fn where_predicates<N: TypeParamsOwner>(node: &N) -> Vec<String> { | ||
57 | let mut res = vec![]; | ||
58 | if let Some(clause) = node.where_clause() { | ||
59 | res.extend(clause.predicates().map(|p| p.syntax().text().to_string())); | ||
60 | } | ||
61 | res | ||
62 | } | ||
63 | |||
64 | pub(crate) fn macro_label(node: &ast::MacroCall) -> String { | ||
65 | let name = node.name().map(|name| name.syntax().text().to_string()).unwrap_or_default(); | ||
66 | let vis = if node.has_atom_attr("macro_export") { "#[macro_export]\n" } else { "" }; | ||
67 | format!("{}macro_rules! {}", vis, name) | ||
68 | } | ||
69 | |||
70 | pub(crate) fn rust_code_markup<CODE: AsRef<str>>(val: CODE) -> String { | ||
71 | rust_code_markup_with_doc::<_, &str>(val, None) | ||
72 | } | ||
73 | |||
74 | pub(crate) fn rust_code_markup_with_doc<CODE, DOC>(val: CODE, doc: Option<DOC>) -> String | ||
75 | where | ||
76 | CODE: AsRef<str>, | ||
77 | DOC: AsRef<str>, | ||
78 | { | ||
79 | if let Some(doc) = doc { | ||
80 | format!("```rust\n{}\n```\n\n{}", val.as_ref(), doc.as_ref()) | ||
81 | } else { | ||
82 | format!("```rust\n{}\n```", val.as_ref()) | ||
83 | } | ||
84 | } | ||