aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-semver/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe-semver/src')
-rw-r--r--crates/shirabe-semver/src/constraint/constraint.rs12
-rw-r--r--crates/shirabe-semver/src/constraint/constraint_interface.rs15
-rw-r--r--crates/shirabe-semver/src/version_parser.rs2
3 files changed, 28 insertions, 1 deletions
diff --git a/crates/shirabe-semver/src/constraint/constraint.rs b/crates/shirabe-semver/src/constraint/constraint.rs
index d64c0a0..4ac4cda 100644
--- a/crates/shirabe-semver/src/constraint/constraint.rs
+++ b/crates/shirabe-semver/src/constraint/constraint.rs
@@ -387,6 +387,18 @@ impl ConstraintInterface for Constraint {
fn as_any(&self) -> &dyn std::any::Any {
self
}
+
+ fn is_constraint(&self) -> bool {
+ true
+ }
+
+ fn get_operator(&self) -> &'static str {
+ Self::trans_op_int(self.operator)
+ }
+
+ fn get_version(&self) -> &str {
+ &self.version
+ }
}
impl std::fmt::Display for Constraint {
diff --git a/crates/shirabe-semver/src/constraint/constraint_interface.rs b/crates/shirabe-semver/src/constraint/constraint_interface.rs
index 09536e6..f4bd905 100644
--- a/crates/shirabe-semver/src/constraint/constraint_interface.rs
+++ b/crates/shirabe-semver/src/constraint/constraint_interface.rs
@@ -22,6 +22,21 @@ pub trait ConstraintInterface: std::fmt::Debug {
false
}
+ /// Rust-specific helper: PHP `$c instanceof Constraint` check.
+ fn is_constraint(&self) -> bool {
+ false
+ }
+
+ /// Rust-specific helper: PHP `$c->getOperator()`. Only meaningful when `is_constraint()` is true.
+ fn get_operator(&self) -> &'static str {
+ ""
+ }
+
+ /// Rust-specific helper: PHP `$c->getVersion()`. Only meaningful when `is_constraint()` is true.
+ fn get_version(&self) -> &str {
+ ""
+ }
+
fn clone_box(&self) -> Box<dyn ConstraintInterface>;
fn as_any(&self) -> &dyn std::any::Any;
diff --git a/crates/shirabe-semver/src/version_parser.rs b/crates/shirabe-semver/src/version_parser.rs
index 359beec..39000e7 100644
--- a/crates/shirabe-semver/src/version_parser.rs
+++ b/crates/shirabe-semver/src/version_parser.rs
@@ -20,7 +20,7 @@ const MODIFIER_REGEX: &str =
const STABILITIES_REGEX: &str = "stable|RC|beta|alpha|dev";
-#[derive(Debug)]
+#[derive(Debug, Clone)]
pub struct VersionParser;
impl VersionParser {