pub mod build;
mod case;
mod error;
mod help;
pub mod meta;
pub mod parse;
pub mod scope;
mod spell;
mod stack;
pub mod style;
pub use crate::{
build::Builder,
case::Case,
error::Error,
meta::Options,
parse::{Parse, Parser},
scope::Scope,
};
const HELP: usize = usize::MAX;
const VERSION: usize = usize::MAX - 1;
const LICENSE: usize = usize::MAX - 2;
const AUTHOR: usize = usize::MAX - 3;
const BREAK: usize = usize::MAX - 4;
const SHIFT: u32 = 5;
const MASK: usize = (1 << SHIFT) - 1;
const MAXIMUM: u32 = usize::BITS - 14;
#[macro_export]
macro_rules! header {
() => {
|builder: $crate::Builder<$crate::scope::Root, _>| $crate::header!(builder)
};
($builder: expr) => {
$builder.pipe(|mut builder| {
builder = builder.name(env!("CARGO_BIN_NAME").trim());
builder = builder.version(env!("CARGO_PKG_VERSION").trim());
builder = builder.license(
env!("CARGO_PKG_LICENSE").trim(),
env!("CARGO_PKG_LICENSE_FILE").trim(),
);
builder = env!("CARGO_PKG_AUTHORS")
.trim()
.split(':')
.fold(builder, |builder, author| builder.author(author.trim()));
builder = builder.summary(env!("CARGO_PKG_DESCRIPTION").trim());
builder = builder.home(env!("CARGO_PKG_HOMEPAGE").trim());
builder = builder.repository(env!("CARGO_PKG_REPOSITORY").trim());
builder
})
};
}