git.delta.rocks / unique-network / refs/commits / 9d51561e5bd0

difftreelog

source

pallets/proxy-rmrk-core/src/property.rs2.2 KiBsourcehistory
1use super::*;2use core::convert::AsRef;34pub enum RmrkProperty<'r> {5    Metadata,6    CollectionType,7    RoyaltyInfo,8    Equipped,9    ResourceCollection,10    ResourcePriorities,11    ResourceType,12    PendingResourceAccept,13    PendingResourceRemoval,14    Parts,15    Base,16    Src,17    Slot,18    License,19    Thumb,20    EquippedNft,21    BaseType,22    ExternalPartId,23    EquippableList,24    ZIndex,25    ThemeName,26    ThemeInherit,27    UserProperty(&'r [u8]),28}2930impl<'r> RmrkProperty<'r> {31    pub fn to_key<T: Config>(self) -> Result<PropertyKey, Error<T>> {32        fn get_bytes<T: AsRef<[u8]>>(container: &T) -> &[u8] {33            container.as_ref()34        }3536        macro_rules! key {37            ($($component:expr),+) => {38                PropertyKey::try_from([$(key!(@ &$component)),+].concat())39                    .map_err(|_| <Error<T>>::RmrkPropertyKeyIsTooLong)40            };4142            (@ $key:expr) => {43                get_bytes($key)44            };45        }4647        match self {48            Self::Metadata => key!("metadata"),49            Self::CollectionType => key!("collection-type"),50            Self::RoyaltyInfo => key!("royalty-info"),51            Self::Equipped => key!("equipped"),52            Self::ResourceCollection => key!("resource-collection"),53            Self::ResourcePriorities => key!("resource-priorities"),54            Self::ResourceType => key!("resource-type"),55            Self::PendingResourceAccept => key!("pending-accept"),56            Self::PendingResourceRemoval => key!("pending-removal"),57            Self::Parts => key!("parts"),58            Self::Base => key!("base"),59            Self::Src => key!("src"),60            Self::Slot => key!("slot"),61            Self::License => key!("license"),62            Self::Thumb => key!("thumb"),63            Self::EquippedNft => key!("equipped-nft"),64            Self::BaseType => key!("base-type"),65            Self::ExternalPartId => key!("ext-part-id"),66            Self::EquippableList => key!("equippable-list"),67            Self::ZIndex => key!("z-index"),68            Self::ThemeName => key!("theme-name"),69            Self::ThemeInherit => key!("theme-inherit"),70            Self::UserProperty(name) => key!("userprop-", name),71        }72    }73}