pub struct DataValueValidator { /* private fields */ }Expand description
A declaration closure used to validate Morphir data without I/O.
Build this from the supplied V3 or V4 distribution, then validate the predicate’s declared type. Semantic interpreters, including target-name language-ID policy, run separately after this shared shape check.
§Example
use indexmap::IndexMap;
use morphir_core::data_value::DataValueValidator;
use morphir_core::ir::v4;
use morphir_core::naming::{FQName, PackageName, Path};
let distribution = v4::Distribution::Specs(v4::SpecsContent {
package_name: PackageName::new(Path::new("example")),
dependencies: IndexMap::new(),
spec: v4::PackageSpecification { modules: IndexMap::new() },
});
let string = v4::Type::reference(
v4::TypeAttributes::default(),
FQName::from_canonical_string("morphir/SDK:string#string")?,
vec![],
);
let validator = DataValueValidator::v4(&distribution)?;
assert!(validator.validate_v4_data(&string, &serde_json::json!("order")).is_ok());Implementations§
Source§impl DataValueValidator
impl DataValueValidator
Sourcepub fn v4(distribution: &Distribution) -> Result<Self, DataValueError>
pub fn v4(distribution: &Distribution) -> Result<Self, DataValueError>
Collect all type definitions and specifications visible to a V4 distribution.
Sourcepub fn v3(distribution: &Distribution) -> Result<Self, DataValueError>
pub fn v3(distribution: &Distribution) -> Result<Self, DataValueError>
Collect all type definitions and specifications visible to a V3 distribution.
Sourcepub fn validate_v4_data(
&self,
ty: &Type,
value: &Value,
) -> Result<(), DataValueError>
pub fn validate_v4_data( &self, ty: &Type, value: &Value, ) -> Result<(), DataValueError>
Validate one V4 data value against a declared Morphir type.
Sourcepub fn validate_v3_data(
&self,
ty: &Type<Attrs>,
value: &Value,
) -> Result<(), DataValueError>
pub fn validate_v3_data( &self, ty: &Type<Attrs>, value: &Value, ) -> Result<(), DataValueError>
Validate one V3 data value against a declared Morphir type.
Sourcepub fn validate_v4_object(
&self,
ty: &Type,
object: &ObjectTerm,
) -> Result<(), DataValueError>
pub fn validate_v4_object( &self, ty: &Type, object: &ObjectTerm, ) -> Result<(), DataValueError>
Validate a V4 metadata object only when it is a data term.
Sourcepub fn validate_reference(
&self,
name: &FQName,
value: &Value,
) -> Result<(), DataValueError>
pub fn validate_reference( &self, name: &FQName, value: &Value, ) -> Result<(), DataValueError>
Validate a named type entry point, as used by decorator sidecars.
Auto Trait Implementations§
impl Freeze for DataValueValidator
impl RefUnwindSafe for DataValueValidator
impl Send for DataValueValidator
impl Sync for DataValueValidator
impl Unpin for DataValueValidator
impl UnsafeUnpin for DataValueValidator
impl UnwindSafe for DataValueValidator
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more