mod aliases;
mod analysis_task;
mod atom;
mod connectivity;
mod distance_search;
mod measure;
mod modify;
mod ndx_file;
mod particle;
mod periodic_box;
mod periodic_table;
mod providers;
mod sasa;
mod selection;
mod state;
mod topology;
mod seq_align;
pub mod io;
pub mod voronoi_cell;
pub mod prelude {
pub use crate::{
aliases::*, analysis_task::*, atom::*, connectivity::*, distance_search::*, io::*,
measure::*, modify::*, ndx_file::*, particle::*, periodic_box::*, providers::*,
sasa::*, selection::*, state::*, topology::*,
};
pub use rayon::iter::{IndexedParallelIterator, ParallelIterator};
}
pub use crate::{
aliases::*, analysis_task::*, atom::*, connectivity::*, distance_search::*, io::*, measure::*,
modify::*, ndx_file::*, particle::*, periodic_box::*, providers::*, sasa::*, selection::*,
state::*, topology::*,
};
const BOLD: &str = "\x1b[1m";
const RESET: &str = "\x1b[0m";
pub fn greeting(tool: impl AsRef<str>) {
const TITLE: &str = "MolAR - Molecular Analysis for Rust";
let version = format!("MolAR version: {}", env!("CARGO_PKG_VERSION"));
let tool = format!("Tool: {}", tool.as_ref());
let w = [env!("CARGO_PKG_HOMEPAGE"), env!("CARGO_PKG_AUTHORS"), &version, &tool]
.iter()
.map(|s| s.len())
.max()
.unwrap_or(0)
.max(TITLE.len());
let bar = "─".repeat(w + 2);
println!("╭{bar}╮");
println!("│ {BOLD}{TITLE:<w$}{RESET} │");
println!("├{bar}┤");
println!("│ {:<w$} │", env!("CARGO_PKG_HOMEPAGE"));
println!("│ {:<w$} │", env!("CARGO_PKG_AUTHORS"));
println!("├{bar}┤");
println!("│ {version:<w$} │");
println!("├{bar}┤");
println!("│ {tool:<w$} │");
println!("╰{bar}╯");
}
#[cfg(doctest)]
#[doc = include_str!("../../README.md")]
struct _ReadMe;