diff --git a/src/main.rs b/src/main.rs
index 11d0aee..d981a23 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -192,7 +192,14 @@ fn MainContent() -> impl IntoView {
level: purl_eval::EvalResultLevel::ProbablyOk,
explanation: "".to_string(),
});
- create_effect(move |_| set_eval_version(purl_eval::eval_purl_version(version())));
+ create_effect(move |_| {
+ set_eval_version(purl_eval::eval_purl_version(
+ typex(),
+ namespace(),
+ name(),
+ version(),
+ ))
+ });
let (eval_version_result, set_eval_version_result) =
create_signal(purl_eval::EvalResultLevel::ProbablyOk);
let (eval_version_result_explanation, set_eval_version_result_explanation) =
@@ -413,6 +420,7 @@ fn MainContent() -> impl IntoView {
.into_owned()
}
/>
+
"qualifiers"
diff --git a/src/purl_eval.rs b/src/purl_eval.rs
index d4ef945..3f185c3 100644
--- a/src/purl_eval.rs
+++ b/src/purl_eval.rs
@@ -229,15 +229,31 @@ pub fn eval_purl_name(
}
// TODO
-pub fn eval_purl_version(version: Option) -> EvalResult {
+pub fn eval_purl_version(
+ _typex: purl_data::PurlType,
+ _purl_namespace: purl_data::PurlNamespace,
+ _purl_name: String,
+ version: Option,
+) -> EvalResult {
match version {
None => EvalResult {
level: EvalResultLevel::ProbablyOk,
explanation: "nothing to check on version".to_string(),
},
Some(s) => {
- let mut findings = vec![];
- EvalResult::aggregate(&findings)
+ match urlencoding::decode(&s) {
+ Err(e) => EvalResult {
+ level: EvalResultLevel::Invalid,
+ explanation: format!(
+ "could not decode, so it must not be a valid percent-encoded string ({e})"
+ ),
+ },
+ Ok(decoded) => {
+ let mut findings = vec![];
+ // TODO
+ EvalResult::aggregate(&findings)
+ }
+ }
}
}
}