#![warn(missing_docs)]
#![forbid(unsafe_code)]
use std::{env, ops::Deref, usize};
#[derive(Debug)]
pub struct Arguments(pub Vec<String>);
impl Arguments {
pub fn new() -> Arguments {
let args = env::args().collect();
Arguments(args)
}
pub fn has_args(&self) -> bool {
if &self.0.len() > &1 {
true
} else {
false
}
}
pub fn len(&self) -> usize {
self.0.deref().len()
}
pub fn eq(&self, num: usize) -> bool {
if &self.0.len() == &num {
return true
}
false
}
pub fn get(&self, index: usize) -> core::option::Option<&String> {
self.0.get(index)
}
pub fn get_value(&self, query: &str) -> core::option::Option<&String> {
for (i, el) in self.0.iter().enumerate() {
if query.eq_ignore_ascii_case(&el) {
return self.0.get(i+1);
}
}
return None;
}
pub fn get_value_case_sensitive(&self, query: &str) -> core::option::Option<&String> {
for (i, el) in self.0.iter().enumerate() {
if query.eq(&el[..]) {
return self.0.get(i+1);
}
}
return None;
}
pub fn get_index(&self, query: &str) -> core::option::Option<usize> {
for (i, el) in self.0.iter().enumerate() {
if query.eq_ignore_ascii_case(&el) {
return Some(i);
}
}
return None;
}
pub fn get_index_case_sensitive(&self, query: &str) -> core::option::Option<usize> {
for (i, el) in self.0.iter().enumerate() {
if query.eq(&el[..]) {
return Some(i);
}
}
return None;
}
pub fn exist(&self, query: &str) -> bool {
for arg in &self.0 {
if query.eq_ignore_ascii_case(&arg) {
return true;
}
}
false
}
pub fn exist_case_sensitive(&self, query: &str) -> bool {
for arg in &self.0 {
if query.eq(&arg[..]) {
return true;
}
}
false
}
pub fn get_after_index(&self, query: usize) -> Vec<String> {
self.0[query..].iter().map(|x| x.to_owned()).collect()
}
}