From 0920be3ef488d22b4d222598c4cfc44b48e5b925 Mon Sep 17 00:00:00 2001 From: asonix Date: Sun, 13 May 2018 23:05:28 -0500 Subject: [PATCH] Add activitystreams-derive readme --- activitystreams-derive/Cargo.toml | 1 + activitystreams-derive/README.md | 71 +++++++++++++++++++++++++++++++ activitystreams-derive/src/lib.rs | 3 +- 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 activitystreams-derive/README.md diff --git a/activitystreams-derive/Cargo.toml b/activitystreams-derive/Cargo.toml index fb49087..59c8adc 100644 --- a/activitystreams-derive/Cargo.toml +++ b/activitystreams-derive/Cargo.toml @@ -5,6 +5,7 @@ version = "0.1.0" license = "GPL-3.0" authors = ["asonix "] repository = "https://github.com/asonix/activitystreams" +readme = "README.md" keywords = ["activitystreams", "activitypub"] [dependencies] diff --git a/activitystreams-derive/README.md b/activitystreams-derive/README.md new file mode 100644 index 0000000..775d811 --- /dev/null +++ b/activitystreams-derive/README.md @@ -0,0 +1,71 @@ +# ActivityStreams Derive +__derive macros for ActivityStreams__ + +## Usage +Add the required crates to your `Cargo.toml` +```toml +# Cargo.toml + +activitystreams-derive = "0.1" +activitystreams-traits = "0.1" +serde = "1.0" +serde_derive = "1.0" +serde_json = "1.0" +``` + +And then in your project +```rust +#[macro_use] +extern crate activitystreams_derive; +extern crate activitystreams_traits; +extern crate serde; +#[macro_use] +extern crate serde_derive; +extern crate serde_json; + +use activitystreams_traits::{Link, Object}; + +/// Using the UnitString derive macro +/// +/// This macro implements Serialize and Deserialize for the given type, making this type +/// represent the string "SomeKind" in JSON. +#[derive(Clone, Debug, Default, UnitString)] +#[activitystreams(SomeKind)] +pub struct MyKind; + +/// Using the Properties derive macro +/// +/// This macro generates getters and setters for the associated fields. +#[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)] +#[serde(rename_all = "camelCase")] +pub struct MyProperties { + /// Derive getters and setters for @context with Link and Object traits. + #[serde(rename = "@context")] + #[activitystreams(ab(Object, Link))] + pub context: Option, + + /// Use the UnitString MyKind to enforce the type of the object by "SomeKind" + pub kind: MyKind, + + /// Derive getters and setters for required_key with String type. + /// + /// In the Activity Streams spec, 'functional' means there can only be one item for this + /// key. This means all fields not labeled 'functional' can also be serialized/deserialized + /// as Vec. + #[activitystreams(concrete(String), functional)] + pub required_key: serde_json::Value, +} +``` + +## Contributing +Feel free to open issues for anything you find an issue with. Please note that any contributed code will be licensed under the GPLv3. + +## License + +Copyright © 2018 Riley Trautman + +Tokio ZMQ is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +Tokio ZMQ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. This file is part of Tokio ZMQ. + +You should have received a copy of the GNU General Public License along with Tokio ZMQ. If not, see [http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). diff --git a/activitystreams-derive/src/lib.rs b/activitystreams-derive/src/lib.rs index 4f4ca9c..63a1741 100644 --- a/activitystreams-derive/src/lib.rs +++ b/activitystreams-derive/src/lib.rs @@ -51,7 +51,8 @@ //! #[activitystreams(ab(Object, Link))] //! pub context: Option, //! -//! /// Derive getters and setters for context with Link and Object traits. +//! /// Use the UnitString MyKind to enforce the type of the object by "SomeKind" +//! #[serde(rename = "type")] //! pub kind: MyKind, //! //! /// Derive getters and setters for required_key with String type.