1use super::*;2use core::convert::AsRef;34pub enum RmrkProperty<'r> {5 Metadata,6 CollectionType,7 TokenType,8 Transferable,9 RoyaltyInfo,10 Equipped,11 ResourceCollection,12 ResourcePriorities,13 ResourceType,14 PendingNftAccept,15 PendingResourceAccept,16 PendingResourceRemoval,17 Parts,18 Base,19 Src,20 Slot,21 License,22 Thumb,23 EquippedNft,24 BaseType,25 ExternalPartId,26 EquippableList,27 ZIndex,28 ThemeName,29 ThemeInherit,30 UserProperty(&'r [u8]),31}3233impl<'r> RmrkProperty<'r> {34 pub fn to_key<T: Config>(self) -> Result<PropertyKey, Error<T>> {35 fn get_bytes<T: AsRef<[u8]>>(container: &T) -> &[u8] {36 container.as_ref()37 }3839 macro_rules! key {40 ($($component:expr),+) => {41 PropertyKey::try_from([$(key!(@ &$component)),+].concat())42 .map_err(|_| <Error<T>>::RmrkPropertyKeyIsTooLong)43 };4445 (@ $key:expr) => {46 get_bytes($key)47 };48 }4950 match self {51 Self::Metadata => key!("metadata"),52 Self::CollectionType => key!("collection-type"),53 Self::TokenType => key!("token-type"),54 Self::Transferable => key!("transferable"),55 Self::RoyaltyInfo => key!("royalty-info"),56 Self::Equipped => key!("equipped"),57 Self::ResourceCollection => key!("resource-collection"),58 Self::ResourcePriorities => key!("resource-priorities"),59 Self::ResourceType => key!("resource-type"),60 Self::PendingNftAccept => key!("pending-nft-accept"),61 Self::PendingResourceAccept => key!("pending-resource-accept"),62 Self::PendingResourceRemoval => key!("pending-resource-removal"),63 Self::Parts => key!("parts"),64 Self::Base => key!("base"),65 Self::Src => key!("src"),66 Self::Slot => key!("slot"),67 Self::License => key!("license"),68 Self::Thumb => key!("thumb"),69 Self::EquippedNft => key!("equipped-nft"),70 Self::BaseType => key!("base-type"),71 Self::ExternalPartId => key!("ext-part-id"),72 Self::EquippableList => key!("equippable-list"),73 Self::ZIndex => key!("z-index"),74 Self::ThemeName => key!("theme-name"),75 Self::ThemeInherit => key!("theme-inherit"),76 Self::UserProperty(name) => key!("userprop-", name),77 }78 }79}