Skip to content

Commit 1513063

Browse files
authored
1 parent d59441e commit 1513063

File tree

1 file changed

+33
-26
lines changed

1 file changed

+33
-26
lines changed

tools/od_ref_bot/src/main.rs

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use 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};
44
use regex::Regex;
55
use serde::Deserialize;
66
use 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

526533
impl 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

Comments
 (0)