Skip to content

Commit 800caef

Browse files
authored
Merge pull request #47 from tinaun/new_docs
adjusted responses of `?docs`
2 parents 4835012 + 5778e7e commit 800caef

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

src/crates.rs

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,29 @@ pub fn search(args: Args) -> Result<()> {
6666
Ok(())
6767
}
6868

69+
fn rustc_crate(crate_name: &str) -> Option<&str> {
70+
match crate_name {
71+
"std" => Some("https://doc.rust_lang.org/stable/std/"),
72+
"core" => Some("https://doc.rust_lang.org/stable/core/"),
73+
"beta" => Some("https://doc.rust_lang.org/beta/std/"),
74+
"nightly" => Some("https://doc.rust_lang.org/nightly/std/"),
75+
"rustc" => Some("https://doc.rust_lang.org/nightly/nightly-rustc/"),
76+
_ => None,
77+
}
78+
}
79+
6980
pub fn doc_search(args: Args) -> Result<()> {
70-
if let Some(krate) = get_crate(&args)? {
81+
let crate_name = args
82+
.params
83+
.get("query")
84+
.ok_or("Unable to retrieve param: query")?;
85+
86+
if crate_name.contains("::") {
87+
let message = "`?docs` cannot retrieve documentation for items within a crate.";
88+
api::send_reply(&args, message)?;
89+
} else if let Some(rustc_crate) = rustc_crate(crate_name) {
90+
api::send_reply(&args, rustc_crate)?;
91+
} else if let Some(krate) = get_crate(&args)? {
7192
let name = krate.name;
7293
let message = krate
7394
.documentation
@@ -94,9 +115,9 @@ pub fn help(args: Args) -> Result<()> {
94115

95116
/// Print the help message
96117
pub fn doc_help(args: Args) -> Result<()> {
97-
let help_string = "retrieves documentation for a given crate
118+
let help_string = "retrieve documentation for a given crate
98119
```
99-
?docs query...
120+
?docs crate_name...
100121
```";
101122
api::send_reply(&args, &help_string)?;
102123
Ok(())

0 commit comments

Comments
 (0)