scryfall-client 0.1.0

an wrapper for the scryfall API
use crate::search_builder::SearchBuilderTrait;

pub struct Toughness {
    rhs: String,
    operator: String,
}

impl Toughness {
    fn internal_new(rhs: String, operator: &str) -> Toughness {
        Toughness {
            rhs,
            operator: operator.to_string(),
        }
    }
    pub fn eq(rhs: u32) -> Toughness {
        Toughness::internal_new(rhs.to_string(), ":")
    }
    pub fn less(rhs: u32) -> Toughness {
        Toughness::internal_new(rhs.to_string(), "<")
    }
    pub fn less_eq(rhs: u32) -> Toughness {
        Toughness::internal_new(rhs.to_string(), "<=")
    }
    pub fn greater(rhs: u32) -> Toughness {
        Toughness::internal_new(rhs.to_string(), ">")
    }
    pub fn greater_eq(rhs: u32) -> Toughness {
        Toughness::internal_new(rhs.to_string(), ">=")
    }
    pub fn not(rhs: u32) -> Toughness {
        Toughness::internal_new(rhs.to_string(), "!")
    }
    pub fn eq_pow() -> Toughness {
        Toughness::internal_new("pow".to_string(), ":")
    }
    pub fn less_pow() -> Toughness {
        Toughness::internal_new("pow".to_string(), "<")
    }
    pub fn less_eq_pow() -> Toughness {
        Toughness::internal_new("pow".to_string(), "<=")
    }
    pub fn greater_pow() -> Toughness {
        Toughness::internal_new("pow".to_string(), ">")
    }
    pub fn greater_eq_pow() -> Toughness {
        Toughness::internal_new("pow".to_string(), ">=")
    }
    pub fn not_pow() -> Toughness {
        Toughness::internal_new("pow".to_string(), "!")
    }
}

impl SearchBuilderTrait for Toughness {
    fn stringify(&self) -> String {
        format!("tou{}{}", self.operator, self.rhs.to_string())
    }
}