11use std:: collections:: HashMap ;
22
3- use poise:: serenity_prelude:: { self as serenity, Colour , CreateEmbed } ;
3+ use poise:: serenity_prelude:: { self as serenity, Colour , CreateEmbed , CreateEmbedFooter } ;
44use regex:: Regex ;
55use serde:: Deserialize ;
66use tantivy:: {
@@ -145,6 +145,7 @@ fn format_embed(page: &str, data: &Data) -> Option<serenity::CreateEmbed> {
145145 . as_str ( ) ;
146146
147147 let mut title = parsed. title . clone ( ) ?;
148+ let mut footer = "" . to_string ( ) ;
148149
149150 let mut components: Vec < & str > = page. split ( '/' ) . collect ( ) ;
150151
@@ -155,19 +156,28 @@ fn format_embed(page: &str, data: &Data) -> Option<serenity::CreateEmbed> {
155156
156157 let parent_parsed = data. path_to_parsed . get ( & components. join ( "/" ) ) ?;
157158
158- title = format ! (
159- "{} ({} {})" ,
160- & title,
161- parent_parsed. title. clone( ) ?,
162- if proc { "proc" } else { "var" }
163- )
159+ let parent_title = parent_parsed. title . clone ( ) ?;
160+
161+ if proc {
162+ if parent_title == "DreamMaker" {
163+ title = format ! ( "/proc/{}()" , & title) ;
164+ footer = "global proc" . to_string ( ) ;
165+ } else {
166+ title = format ! ( "{}/proc/{}()" , & parent_title, & title) ;
167+ footer = format ! ( "{} proc" , & parent_title) ;
168+ }
169+ } else {
170+ title = format ! ( "{}/var/{}" , & parent_title, & title) ;
171+ footer = format ! ( "{} var" , & parent_title) ;
172+ }
164173 } ;
165174
166175 let mut embed = serenity:: CreateEmbed :: default ( )
167176 . title ( & title)
168177 . url ( get_url ( page, parsed) )
169178 . color ( Colour :: from_rgb ( 246 , 114 , 128 ) )
170- . description ( format_body ( body, data) ) ;
179+ . description ( format_body ( body, data) )
180+ . footer ( CreateEmbedFooter :: new ( footer) ) ;
171181
172182 let extra = parsed. extra . as_ref ( ) ;
173183
@@ -178,30 +188,28 @@ fn format_embed(page: &str, data: &Data) -> Option<serenity::CreateEmbed> {
178188 let extra = extra. unwrap ( ) ;
179189
180190 if let Some ( formats) = & extra. format {
191+ let mut total_formats = "" . to_string ( ) ;
192+
181193 for format in formats. iter ( ) . enumerate ( ) {
182194 let val = format. 1 ;
183- let mut format_string = format ! ( "```js\n {}( \n " , & parsed . title . clone ( ) ? ) ;
195+ let mut format_string = "```js\n " . to_string ( ) ;
184196
185197 for array_value in val. iter ( ) {
186198 format_string = format ! ( "{}{}\n " , format_string, & array_value. get_arg_as_string( ) ) ;
187199 }
188200
189- format_string. push_str ( ")```" ) ;
190-
191- embed = embed. field (
192- format ! ( "Format {}" , format. 0 + 1 ) . as_str ( ) ,
193- format_string,
194- false ,
195- ) ;
201+ format_string. push_str ( "```\n " ) ;
202+ total_formats. push_str ( format_string. as_str ( ) ) ;
196203 }
204+ embed = embed. field ( "Argument Formats" , total_formats, false ) ;
197205 } else if let Some ( val) = & extra. args {
198- let mut args_string = format ! ( "```js\n {}( \n " , & parsed . title . clone ( ) ? ) ;
206+ let mut args_string = "```js\n " . to_string ( ) ;
199207
200208 for array_value in val. iter ( ) {
201209 args_string = format ! ( "{}{}\n " , args_string, & array_value. get_arg_as_string( ) ) ;
202210 }
203211
204- args_string. push_str ( ") ```" ) ;
212+ args_string. push_str ( "```" ) ;
205213
206214 embed = embed. field ( "Arguments" , args_string, false ) ;
207215 }
@@ -221,7 +229,7 @@ fn format_embed(page: &str, data: &Data) -> Option<serenity::CreateEmbed> {
221229
222230 if let Some ( val) = & page. description {
223231 return_string = if !return_string. is_empty ( ) {
224- format ! ( "{} : {}" , return_string, format_body( val, data) . as_str( ) )
232+ format ! ( "`{}` : {}" , return_string, format_body( val, data) . as_str( ) )
225233 } else {
226234 val. as_str ( ) . to_string ( )
227235 }
@@ -270,12 +278,11 @@ fn format_body(body: &str, data: &Data) -> String {
270278 let original = capture. get ( 0 ) . unwrap ( ) . as_str ( ) ;
271279 let mut type_string = capture. get ( 1 ) . unwrap ( ) . as_str ( ) . to_string ( ) ;
272280
273- if data
281+ if ! data
274282 . path_to_text
275- . get ( format ! ( "objects/{}/_index.md" , & type_string) . as_str ( ) )
276- . is_none ( )
283+ . contains_key ( format ! ( "objects/{}/_index.md" , & type_string) . as_str ( ) )
277284 {
278- type_string = type_string. replace ( "_" , "/" )
285+ type_string = type_string. replace ( '_' , "/" )
279286 }
280287
281288 let mut formatted = type_string. to_string ( ) ;
@@ -325,12 +332,12 @@ fn format_body(body: &str, data: &Data) -> String {
325332 for capture in whitespace_cleaner. captures_iter ( & new_body) {
326333 let original = capture. get ( 0 ) . unwrap ( ) . as_str ( ) ;
327334
328- if let Some ( _ ) = capture. get ( 1 ) {
335+ if capture. get ( 1 ) . is_some ( ) {
329336 whitespaced_body = whitespaced_body. replace ( original, "\n \n ```" ) ;
330337 break ;
331338 }
332339
333- if let Some ( _ ) = capture. get ( 2 ) {
340+ if capture. get ( 2 ) . is_some ( ) {
334341 whitespaced_body = whitespaced_body. replace ( original, "```\n " )
335342 }
336343 }
@@ -525,7 +532,7 @@ struct PageArgs {
525532
526533impl PageArgs {
527534 fn get_arg_as_string ( & self ) -> String {
528- let mut string = format ! ( " \t {}" , & self . name) ;
535+ let mut string = ( self . name ) . to_string ( ) ;
529536
530537 if let Some ( val) = & self . _type {
531538 string = format ! ( "{} as {}" , string, val)
0 commit comments