use crate::lib::{Value};
pub fn pull_all(mut array: Value, values: Value) -> Value {
let new_vec = match array {
Value::Null | Value::Bool(_) | Value::Number(_) | Value::String(_) | Value::Object(_) => {
return array
}
Value::Array(ref vec) => {
let values_vec = match values {
Value::Null
| Value::Bool(_)
| Value::Number(_)
| Value::String(_)
| Value::Object(_) => return array,
Value::Array(vec) => vec,
};
let mut new_vec = vec![];
'a: for item in vec.iter() {
for value in values_vec.iter() {
if item == value {
continue 'a;
}
}
new_vec.push(item.clone())
}
new_vec
}
};
*array.as_array_mut().unwrap() = new_vec;
array
}
#[macro_export]
macro_rules! pull_all {
() => {
json!(null)
};
($a:expr $(,)*) => {
$a
};
($a:expr, $b:expr $(,)*) => {
$crate::pull_all($a, $b)
};
($a:expr, $b:expr, $($rest:tt)*) => {
$crate::pull_all($a, $b)
};
}