mirror of
https://git.asonix.dog/asonix/activitystreams.git
synced 2024-11-22 11:51:00 +00:00
Standardize methods returning OneOrMany<&'a AnyString>
This commit is contained in:
parent
77c890800c
commit
706c4b251a
3 changed files with 47 additions and 4 deletions
|
@ -1,4 +1,8 @@
|
||||||
# Unreleased
|
# Unreleased
|
||||||
|
- Update summary and content to return `OneOrMany<&'a AnyString>`
|
||||||
|
- Implement as_single_xsd_string and as_single_rdf_lang_string for `OneOrMany<&'a AnyString>`
|
||||||
|
|
||||||
|
|
||||||
# 0.7.0-alpha.10
|
# 0.7.0-alpha.10
|
||||||
- Fix extraction of `image` and `icon` when creating Objects from AnyBase
|
- Fix extraction of `image` and `icon` when creating Objects from AnyBase
|
||||||
|
|
||||||
|
|
|
@ -544,11 +544,11 @@ pub trait ObjectExt<Kind>: AsObject<Kind> {
|
||||||
/// println!("{:?}", content);
|
/// println!("{:?}", content);
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
fn content<'a>(&'a self) -> Option<&'a OneOrMany<AnyString>>
|
fn content<'a>(&'a self) -> Option<OneOrMany<&'a AnyString>>
|
||||||
where
|
where
|
||||||
Kind: 'a,
|
Kind: 'a,
|
||||||
{
|
{
|
||||||
self.object_ref().content.as_ref()
|
self.object_ref().content.as_ref().map(|o| o.as_ref())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set the content for the current object
|
/// Set the content for the current object
|
||||||
|
@ -665,11 +665,11 @@ pub trait ObjectExt<Kind>: AsObject<Kind> {
|
||||||
/// println!("{:?}", summary);
|
/// println!("{:?}", summary);
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
fn summary<'a>(&'a self) -> Option<&'a OneOrMany<AnyString>>
|
fn summary<'a>(&'a self) -> Option<OneOrMany<&'a AnyString>>
|
||||||
where
|
where
|
||||||
Kind: 'a,
|
Kind: 'a,
|
||||||
{
|
{
|
||||||
self.object_ref().summary.as_ref()
|
self.object_ref().summary.as_ref().map(|o| o.as_ref())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set the summary for the current object
|
/// Set the summary for the current object
|
||||||
|
|
|
@ -308,6 +308,45 @@ impl OneOrMany<AnyString> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl OneOrMany<&AnyString> {
|
||||||
|
/// Try to borrow a single String from the current object
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # fn main() -> Result<(), anyhow::Error> {
|
||||||
|
/// # use activitystreams::primitives::{OneOrMany, AnyString};
|
||||||
|
/// # let string = OneOrMany::<AnyString>::from_xsd_string("Hey");
|
||||||
|
/// string
|
||||||
|
/// .as_single_xsd_string()
|
||||||
|
/// .ok_or(anyhow::Error::msg("Wrong string type"))?;
|
||||||
|
/// # Ok(())
|
||||||
|
/// # }
|
||||||
|
/// ```
|
||||||
|
pub fn as_single_xsd_string(&self) -> Option<&str> {
|
||||||
|
self.as_one()
|
||||||
|
.and_then(|any_string| any_string.as_xsd_string())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Try to borrow a single RdfLangString from the current object
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # fn main() -> Result<(), anyhow::Error> {
|
||||||
|
/// # use activitystreams::primitives::{OneOrMany, RdfLangString};
|
||||||
|
/// # let string = OneOrMany::from_rdf_lang_string(RdfLangString {
|
||||||
|
/// # value: "hi".into(),
|
||||||
|
/// # language: "en".into(),
|
||||||
|
/// # });
|
||||||
|
/// string
|
||||||
|
/// .as_single_rdf_lang_string()
|
||||||
|
/// .ok_or(anyhow::Error::msg("Wrong string type"))?;
|
||||||
|
/// # Ok(())
|
||||||
|
/// # }
|
||||||
|
/// ```
|
||||||
|
pub fn as_single_rdf_lang_string(&self) -> Option<&RdfLangString> {
|
||||||
|
self.as_one()
|
||||||
|
.and_then(|any_string| any_string.as_rdf_lang_string())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<&str> for AnyString {
|
impl From<&str> for AnyString {
|
||||||
fn from(s: &str) -> Self {
|
fn from(s: &str) -> Self {
|
||||||
AnyString::from_xsd_string(s.to_owned())
|
AnyString::from_xsd_string(s.to_owned())
|
||||||
|
|
Loading…
Reference in a new issue