mirror of
https://git.asonix.dog/asonix/activitystreams.git
synced 2024-11-21 19:31:00 +00:00
Add convenience methods to AnyString
This commit is contained in:
parent
b7f178f2b6
commit
3123fff5a8
5 changed files with 62 additions and 9 deletions
|
@ -1,5 +1,8 @@
|
||||||
# Unreleased
|
# Unreleased
|
||||||
|
|
||||||
|
# 0.7.0-alpha.19
|
||||||
|
- Add `.as_str()`, `.language()` and `impl AsRef<str>` for `AnyString`
|
||||||
|
|
||||||
# 0.7.0-alpha.18
|
# 0.7.0-alpha.18
|
||||||
- expose `Either` type publicly
|
- expose `Either` type publicly
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "activitystreams"
|
name = "activitystreams"
|
||||||
description = "A set of core types and traits for activitystreams data"
|
description = "A set of core types and traits for activitystreams data"
|
||||||
version = "0.7.0-alpha.18"
|
version = "0.7.0-alpha.19"
|
||||||
license = "GPL-3.0"
|
license = "GPL-3.0"
|
||||||
authors = ["asonix <asonix@asonix.dog>"]
|
authors = ["asonix <asonix@asonix.dog>"]
|
||||||
repository = "https://git.asonix.dog/Aardwolf/activitystreams"
|
repository = "https://git.asonix.dog/Aardwolf/activitystreams"
|
||||||
|
|
14
README.md
14
README.md
|
@ -11,7 +11,7 @@ _A set of Traits and Types that make up the ActivityStreams and ActivityPub spec
|
||||||
First, add ActivityStreams to your dependencies
|
First, add ActivityStreams to your dependencies
|
||||||
```toml
|
```toml
|
||||||
[dependencies]
|
[dependencies]
|
||||||
activitystreams = "0.7.0-alpha.11"
|
activitystreams = "0.7.0-alpha.19"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Types
|
### Types
|
||||||
|
@ -164,14 +164,14 @@ If you want to make a function that manipulates an Activity, but not a normal ob
|
||||||
bound the function like so:
|
bound the function like so:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
use activitystreams::{base::BaseExt, context, markers::Activity, uri};
|
use activitystreams::{base::BaseExt, context, markers::Activity, iri};
|
||||||
|
|
||||||
fn manipulator<T, Kind>(mut activity: T) -> Result<(), anyhow::Error>
|
fn manipulator<T, Kind>(mut activity: T) -> Result<(), anyhow::Error>
|
||||||
where
|
where
|
||||||
T: Activity + BaseExt<Kind>,
|
T: Activity + BaseExt<Kind>,
|
||||||
{
|
{
|
||||||
activity
|
activity
|
||||||
.set_id(uri!("https://example.com"))
|
.set_id(iri!("https://example.com"))
|
||||||
.set_context(context());
|
.set_context(context());
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -205,7 +205,7 @@ use activitystreams::{
|
||||||
context,
|
context,
|
||||||
object::{ApObject, Video},
|
object::{ApObject, Video},
|
||||||
prelude::*,
|
prelude::*,
|
||||||
uri,
|
iri,
|
||||||
};
|
};
|
||||||
|
|
||||||
fn main() -> Result<(), anyhow::Error> {
|
fn main() -> Result<(), anyhow::Error> {
|
||||||
|
@ -213,12 +213,12 @@ fn main() -> Result<(), anyhow::Error> {
|
||||||
|
|
||||||
video
|
video
|
||||||
.set_context(context())
|
.set_context(context())
|
||||||
.set_id(uri!("https://example.com/@example/lions"))
|
.set_id(iri!("https://example.com/@example/lions"))
|
||||||
.set_media_type("video/webm".parse()?)
|
.set_media_type("video/webm".parse()?)
|
||||||
.set_url(uri!("https://example.com/@example/lions/video.webm"))
|
.set_url(iri!("https://example.com/@example/lions/video.webm"))
|
||||||
.set_summary("A cool video")
|
.set_summary("A cool video")
|
||||||
.set_duration("PT4M20S".parse()?)
|
.set_duration("PT4M20S".parse()?)
|
||||||
.set_shares(uri!("https://example.com/@example/lions/video.webm#shares"));
|
.set_shares(iri!("https://example.com/@example/lions/video.webm#shares"));
|
||||||
|
|
||||||
println!("Video, {:#?}", video);
|
println!("Video, {:#?}", video);
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
//! First, add ActivityStreams to your dependencies
|
//! First, add ActivityStreams to your dependencies
|
||||||
//! ```toml
|
//! ```toml
|
||||||
//! [dependencies]
|
//! [dependencies]
|
||||||
//! activitystreams = "0.7.0-alpha.11"
|
//! activitystreams = "0.7.0-alpha.19"
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! ### Types
|
//! ### Types
|
||||||
|
|
|
@ -155,6 +155,56 @@ impl AnyString {
|
||||||
{
|
{
|
||||||
self.0 = Either::Right(string.into());
|
self.0 = Either::Right(string.into());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Borrow the inner str
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use activitystreams::primitives::{AnyString, RdfLangString};
|
||||||
|
/// let any_string = AnyString::from_xsd_string("hi");
|
||||||
|
///
|
||||||
|
/// assert_eq!(any_string.as_str(), "hi");
|
||||||
|
///
|
||||||
|
/// let any_string = AnyString::from_rdf_lang_string(RdfLangString {
|
||||||
|
/// value: "hi".into(),
|
||||||
|
/// language: "en".into(),
|
||||||
|
/// });
|
||||||
|
///
|
||||||
|
/// assert_eq!(any_string.as_str(), "hi");
|
||||||
|
/// ```
|
||||||
|
pub fn as_str(&self) -> &str {
|
||||||
|
match self.0 {
|
||||||
|
Either::Left(ref s) => s,
|
||||||
|
Either::Right(ref lang_str) => &lang_str.value,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Borrow the inner language
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use activitystreams::primitives::{AnyString, RdfLangString};
|
||||||
|
/// let any_string = AnyString::from_xsd_string("hi");
|
||||||
|
///
|
||||||
|
/// assert_eq!(any_string.language(), None);
|
||||||
|
///
|
||||||
|
/// let any_string = AnyString::from_rdf_lang_string(RdfLangString {
|
||||||
|
/// value: "hi".into(),
|
||||||
|
/// language: "en".into(),
|
||||||
|
/// });
|
||||||
|
///
|
||||||
|
/// assert_eq!(any_string.language(), Some("en"));
|
||||||
|
/// ```
|
||||||
|
pub fn language(&self) -> Option<&str> {
|
||||||
|
match self.0 {
|
||||||
|
Either::Left(_) => None,
|
||||||
|
Either::Right(ref lang_str) => Some(&lang_str.language),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl AsRef<str> for AnyString {
|
||||||
|
fn as_ref(&self) -> &str {
|
||||||
|
self.as_str()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl OneOrMany<AnyString> {
|
impl OneOrMany<AnyString> {
|
||||||
|
|
Loading…
Reference in a new issue