axioval-ir 0.1.17

Source-neutral semantic IR and validation result contracts for Axioval
Documentation
#![allow(missing_docs)]
use super::{ExternalName, LocalizedText, PackageMetadata, ParameterValue};
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct ObjectTypeDefinition {
    pub id: String,
    pub name: LocalizedText,
    pub description: Option<LocalizedText>,
    pub external_names: Vec<ExternalName>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct PropertyDefinition {
    pub id: String,
    pub name: LocalizedText,
    pub description: Option<LocalizedText>,
    pub value_kind: PropertyValueKind,
    pub unit_dimension: Option<String>,
    pub external_names: Vec<ExternalName>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct PropertySetDefinition {
    pub id: String,
    pub name: LocalizedText,
    pub description: Option<LocalizedText>,
    pub external_names: Vec<ExternalName>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct ParameterDefinition {
    pub id: String,
    pub name: LocalizedText,
    pub description: Option<LocalizedText>,
    pub kind: ParameterKind,
    pub referenced_value_kind: Option<PropertyValueKind>,
    #[serde(default = "yes")]
    pub required: bool,
    pub default_value: Option<ParameterValue>,
    #[serde(default)]
    pub allowed_values: Vec<ParameterValue>,
    pub unit_dimension: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct RuleDefinition {
    pub id: String,
    pub name: LocalizedText,
    pub description: Option<LocalizedText>,
    pub capability: String,
    #[serde(default)]
    pub parameters: BTreeMap<String, ParameterDefinition>,
    #[serde(default)]
    pub tags: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct DefinitionPackage {
    pub schema_version: String,
    pub package: PackageMetadata,
    #[serde(default)]
    pub object_types: BTreeMap<String, ObjectTypeDefinition>,
    #[serde(default)]
    pub properties: BTreeMap<String, PropertyDefinition>,
    #[serde(default)]
    pub property_sets: BTreeMap<String, PropertySetDefinition>,
    #[serde(default)]
    pub definitions: BTreeMap<String, RuleDefinition>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum ParameterKind {
    String,
    Boolean,
    Integer,
    Number,
    Quantity,
    Enum,
    Reference,
    ObjectTypeReference,
    PropertyReference,
    Selector,
    StringList,
    ReferenceList,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum PropertyValueKind {
    String,
    Boolean,
    Integer,
    Number,
    Quantity,
    Enum,
    Reference,
    StringList,
    ReferenceList,
}
const fn yes() -> bool {
    true
}