Implement OneOrMany<AnyBase>::to_as_uri()
This commit is contained in:
parent
456df3e535
commit
bb5157637d
@ -1,6 +1,7 @@
|
|||||||
use activitypub::{Activity, Link, Object};
|
use activitypub::{Activity, Link, Object};
|
||||||
use activitystreams::{
|
use activitystreams::{
|
||||||
actor::{ApActor, Group, Person},
|
actor::{ApActor, Group, Person},
|
||||||
|
base::AnyBase,
|
||||||
iri_string::types::IriString,
|
iri_string::types::IriString,
|
||||||
markers::Activity as Activity07,
|
markers::Activity as Activity07,
|
||||||
object::{ApObject, Article},
|
object::{ApObject, Article},
|
||||||
@ -438,6 +439,25 @@ impl AsAsStr for OneOrMany<&AnyString> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait ToAsUri {
|
||||||
|
fn to_as_uri(&self) -> Option<String>;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToAsUri for OneOrMany<AnyBase> {
|
||||||
|
fn to_as_uri(&self) -> Option<String> {
|
||||||
|
if let Some(prop) = self.as_one() {
|
||||||
|
prop.as_xsd_any_uri().map(|uri| uri.to_string())
|
||||||
|
} else if let Some(prop) = self.as_many() {
|
||||||
|
prop.iter()
|
||||||
|
.next()
|
||||||
|
.and_then(|p| p.as_xsd_any_uri())
|
||||||
|
.map(|uri| uri.to_string())
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
Loading…
Reference in New Issue
Block a user