use {
crate::{
semver_range::SemverRange,
specifier::{self, strip_semver_range, Specifier},
},
std::rc::Rc,
};
#[derive(Debug, PartialEq)]
pub struct RangeMinor {
pub raw: String,
pub node_range: Rc<node_semver::Range>,
pub node_version: Rc<node_semver::Version>,
pub semver_number: String,
pub semver_range: SemverRange,
}
impl RangeMinor {
pub fn create(raw: &str) -> Specifier {
let semver_range = SemverRange::parse(raw);
let semver_number = strip_semver_range(raw).to_string();
let padded = format!("{}.{}", semver_number, specifier::HUGE);
match (Specifier::new_node_version(&padded), Specifier::new_node_range(raw)) {
(Some(node_version), Some(node_range)) => Specifier::RangeMinor(Self {
raw: raw.to_string(),
node_range,
node_version,
semver_number,
semver_range,
}),
_ => Specifier::Unsupported(raw.to_string()),
}
}
}