Update TypeReferencePath
This commit is contained in:
parent
21d786dee6
commit
cc0bd1b481
@ -423,11 +423,12 @@ impl SchemaFieldData {
|
|||||||
/// Stores information about the location and id of a reference in a JSON schema.
|
/// Stores information about the location and id of a reference in a JSON schema.
|
||||||
#[derive(Debug, Clone, PartialEq, Default, Reflect, Hash, Eq, Ord, PartialOrd)]
|
#[derive(Debug, Clone, PartialEq, Default, Reflect, Hash, Eq, Ord, PartialOrd)]
|
||||||
pub struct TypeReferencePath {
|
pub struct TypeReferencePath {
|
||||||
/// The location of the reference in the JSON schema.
|
/// The location of the JSON schema reference.
|
||||||
pub localization: ReferenceLocation,
|
pub location: ReferenceLocation,
|
||||||
/// The id of the reference.
|
/// The id of the reference.
|
||||||
pub id: TypeReferenceId,
|
pub id: TypeReferenceId,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Encodes a string into a valid RFC 3986 URI string.
|
/// Encodes a string into a valid RFC 3986 URI string.
|
||||||
fn encode_to_uri(input: &str) -> String {
|
fn encode_to_uri(input: &str) -> String {
|
||||||
let mut out = String::with_capacity(input.len());
|
let mut out = String::with_capacity(input.len());
|
||||||
@ -449,40 +450,21 @@ fn encode_to_uri(input: &str) -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl TypeReferencePath {
|
impl TypeReferencePath {
|
||||||
/// Checks if the reference is local.
|
|
||||||
pub fn is_local(&self) -> bool {
|
|
||||||
self.localization == ReferenceLocation::Definitions
|
|
||||||
|| self.localization == ReferenceLocation::Components
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Creates a new `TypeReferencePath` with the given type path at the Definitions location.
|
/// Creates a new `TypeReferencePath` with the given type path at the Definitions location.
|
||||||
pub fn definition(id: impl Into<TypeReferenceId>) -> Self {
|
pub fn definition(id: impl Into<TypeReferenceId>) -> Self {
|
||||||
TypeReferencePath::new_ref(ReferenceLocation::Definitions, id)
|
TypeReferencePath::new_ref(ReferenceLocation::Definitions, id)
|
||||||
}
|
}
|
||||||
/// Creates a new `TypeReferencePath` with the given location and type path.
|
/// Creates a new `TypeReferencePath` with the given location and type path.
|
||||||
pub fn new_ref<I: Into<TypeReferenceId>>(localization: ReferenceLocation, id: I) -> Self {
|
pub fn new_ref<I: Into<TypeReferenceId>>(location: ReferenceLocation, id: I) -> Self {
|
||||||
TypeReferencePath {
|
TypeReferencePath {
|
||||||
localization,
|
location,
|
||||||
id: id.into(),
|
id: id.into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the type path of the reference.
|
|
||||||
pub fn type_path(&self) -> String {
|
|
||||||
self.id.replace("-", "::")
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Changes the localization of the reference.
|
|
||||||
pub fn change_localization(&mut self, new_localization: ReferenceLocation) {
|
|
||||||
if self.localization.eq(&ReferenceLocation::Url) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
self.localization = new_localization;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
impl Display for TypeReferencePath {
|
impl Display for TypeReferencePath {
|
||||||
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
||||||
write!(f, "{}{}", self.localization, encode_to_uri(&self.id))
|
write!(f, "{}{}", self.location, encode_to_uri(&self.id))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user