@@ -66,8 +66,29 @@ pub fn search(args: Args) -> Result<()> {
66
66
Ok ( ( ) )
67
67
}
68
68
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
+
69
80
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) ? {
71
92
let name = krate. name ;
72
93
let message = krate
73
94
. documentation
@@ -94,9 +115,9 @@ pub fn help(args: Args) -> Result<()> {
94
115
95
116
/// Print the help message
96
117
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
98
119
```
99
- ?docs query ...
120
+ ?docs crate_name ...
100
121
```" ;
101
122
api:: send_reply ( & args, & help_string) ?;
102
123
Ok ( ( ) )
0 commit comments