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) + } + } } } }