More logic in trait, start removing old code
This commit is contained in:
parent
b6d55b5b2c
commit
84bcdb9651
@ -3,7 +3,8 @@
|
|||||||
use alloc::borrow::Cow;
|
use alloc::borrow::Cow;
|
||||||
use bevy_platform::collections::HashMap;
|
use bevy_platform::collections::HashMap;
|
||||||
use bevy_reflect::{
|
use bevy_reflect::{
|
||||||
prelude::ReflectDefault, serde::ReflectSerializer, GetTypeRegistration, Reflect, TypeRegistry,
|
prelude::ReflectDefault, serde::ReflectSerializer, GetTypeRegistration, Reflect, TypeInfo,
|
||||||
|
TypeRegistration, TypeRegistry,
|
||||||
};
|
};
|
||||||
use core::any::TypeId;
|
use core::any::TypeId;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@ -294,6 +295,36 @@ pub enum SchemaKind {
|
|||||||
/// Optional type
|
/// Optional type
|
||||||
Optional,
|
Optional,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl SchemaKind {
|
||||||
|
/// Creates a [`SchemaKind`] from a [`TypeRegistration`].
|
||||||
|
pub fn from_type_reg(type_reg: &TypeRegistration) -> Self {
|
||||||
|
match type_reg.type_info() {
|
||||||
|
TypeInfo::Struct(_) => SchemaKind::Struct,
|
||||||
|
TypeInfo::TupleStruct(_) => SchemaKind::TupleStruct,
|
||||||
|
TypeInfo::Tuple(_) => SchemaKind::Tuple,
|
||||||
|
TypeInfo::List(_) => SchemaKind::List,
|
||||||
|
TypeInfo::Array(_) => SchemaKind::Array,
|
||||||
|
TypeInfo::Map(_) => SchemaKind::Map,
|
||||||
|
TypeInfo::Set(_) => SchemaKind::Set,
|
||||||
|
TypeInfo::Opaque(o) => {
|
||||||
|
let schema_type: SchemaType = o.ty().id().into();
|
||||||
|
match schema_type {
|
||||||
|
SchemaType::Object => SchemaKind::Struct,
|
||||||
|
SchemaType::Array => SchemaKind::Array,
|
||||||
|
_ => SchemaKind::Value,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TypeInfo::Enum(enum_info) => {
|
||||||
|
if super::reflect_info::try_get_optional_from_info(enum_info).is_some() {
|
||||||
|
SchemaKind::Optional
|
||||||
|
} else {
|
||||||
|
SchemaKind::Enum
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
/// Represents the possible type variants for a JSON Schema.
|
/// Represents the possible type variants for a JSON Schema.
|
||||||
///
|
///
|
||||||
/// In JSON Schema, the `type` keyword can either specify a single type
|
/// In JSON Schema, the `type` keyword can either specify a single type
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user