Geoffrey-rs/geoffrey_bot/src/bot/formatters.rs

56 lines
1.2 KiB
Rust

use geoffrey_models::models::locations::Location;
use geoffrey_models::models::player::Player;
use geoffrey_models::models::Portal;
pub fn display_owners(owners: Vec<Player>, limit: usize) -> String {
let mut plural = "";
let mut ellipses = "";
if owners.len() > 1 {
plural = "s"
}
let range = if owners.len() > limit {
ellipses = "...";
limit
} else {
owners.len()
};
format!(
"Owner{}: {}{}",
plural,
owners[0..range]
.iter()
.map(|owner| owner.name.clone())
.collect::<Vec<String>>()
.join(", "),
ellipses
)
}
pub fn display_portal(portal: Portal) -> String {
format!(
"Portal: {} {} (x={}, z={})",
portal.direction(),
portal.tunnel_addr(),
portal.x,
portal.z
)
}
pub fn display_loc(loc: Location) -> String {
let portal_str = match loc.portal {
None => "".to_string(),
Some(p) => format!("{}, ", display_portal(p)),
};
format!(
"**{}**, {}, {}{}",
loc.name,
loc.position,
portal_str,
display_owners(loc.owners, 3),
)
}