aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs401
1 files changed, 191 insertions, 210 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 7f0966b..695c973 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,5 +1,5 @@
#[cfg(feature = "knuffel")]
-use knuffel::Decode;
+use knuffel::{Decode, DecodeScalar};
pub trait BuildFromRef {
fn ref_to(query: impl Into<String>) -> Self;
@@ -21,239 +21,220 @@ pub struct Document {
pub nodes: Vec<Node>,
}
-pub use info::Info;
-
-pub mod info {
- use super::*;
-
- #[derive(Debug, PartialEq, Eq, Default)]
- #[cfg_attr(feature = "knuffel", derive(Decode))]
- pub struct Info {
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "title")))]
- pub title: Vec<TextValue>,
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "description")))]
- pub description: Vec<TextValue>,
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "author")))]
- pub authors: Vec<Person>,
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "contributor")))]
- pub contributors: Vec<Person>,
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "link")))]
- pub links: Vec<Link>,
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "license")))]
- pub licenses: Vec<License>,
- #[cfg_attr(feature = "knuffel", knuffel(child))]
- pub published: Option<Date>,
- #[cfg_attr(feature = "knuffel", knuffel(child))]
- pub modified: Option<Date>,
- }
-
- #[derive(Debug, PartialEq, Eq)]
- #[cfg_attr(feature = "knuffel", derive(Decode))]
- pub struct TextValue {
- #[cfg_attr(feature = "knuffel", knuffel(argument))]
- pub text: String,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub lang: Option<String>,
- }
-
- #[derive(Debug, PartialEq, Eq)]
- #[cfg_attr(feature = "knuffel", derive(Decode))]
- pub struct Person {
- #[cfg_attr(feature = "knuffel", knuffel(argument))]
- pub name: String,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub orcid: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "link")))]
- pub links: Vec<Link>,
- }
+#[derive(Debug, PartialEq, Eq, Default)]
+#[cfg_attr(feature = "knuffel", derive(Decode))]
+pub struct Info {
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "title")))]
+ pub title: Vec<TextValue>,
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "description")))]
+ pub description: Vec<TextValue>,
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "author")))]
+ pub authors: Vec<Person>,
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "contributor")))]
+ pub contributors: Vec<Person>,
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "link")))]
+ pub links: Vec<Link>,
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "license")))]
+ pub licenses: Vec<License>,
+ #[cfg_attr(feature = "knuffel", knuffel(child))]
+ pub published: Option<Date>,
+ #[cfg_attr(feature = "knuffel", knuffel(child))]
+ pub modified: Option<Date>,
+}
- #[derive(Debug, PartialEq, Eq)]
- #[cfg_attr(feature = "knuffel", derive(Decode))]
- pub struct Link {
- #[cfg_attr(feature = "knuffel", knuffel(argument))]
- pub iri: String,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub rel: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub lang: Option<String>,
- }
+#[derive(Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "knuffel", derive(Decode))]
+pub struct TextValue {
+ #[cfg_attr(feature = "knuffel", knuffel(argument))]
+ pub text: String,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub lang: Option<String>,
+}
- #[derive(Debug, PartialEq, Eq)]
- #[cfg_attr(feature = "knuffel", derive(Decode))]
- pub struct License {
- #[cfg_attr(feature = "knuffel", knuffel(argument))]
- pub name: String,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub spdx: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "link")))]
- pub link: Vec<Link>,
- }
+#[derive(Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "knuffel", derive(Decode))]
+pub struct Person {
+ #[cfg_attr(feature = "knuffel", knuffel(argument))]
+ pub name: String,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub orcid: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "link")))]
+ pub links: Vec<Link>,
+}
- #[derive(Debug, PartialEq, Eq)]
- #[cfg_attr(feature = "knuffel", derive(Decode))]
- pub struct Date {
- #[cfg_attr(feature = "knuffel", knuffel(argument))]
- pub date: String,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub time: Option<String>,
- }
+#[derive(Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "knuffel", derive(Decode))]
+pub struct Link {
+ #[cfg_attr(feature = "knuffel", knuffel(argument))]
+ pub iri: String,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub rel: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub lang: Option<String>,
}
-pub use node::Node;
+#[derive(Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "knuffel", derive(Decode))]
+pub struct License {
+ #[cfg_attr(feature = "knuffel", knuffel(argument))]
+ pub name: String,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub spdx: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "link")))]
+ pub link: Vec<Link>,
+}
-pub mod node {
- use super::*;
+#[derive(Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "knuffel", derive(Decode))]
+pub struct Date {
+ #[cfg_attr(feature = "knuffel", knuffel(argument))]
+ pub date: String,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub time: Option<String>,
+}
- #[derive(Debug, PartialEq, Eq, Default)]
- #[cfg_attr(feature = "knuffel", derive(Decode))]
- pub struct Node {
- #[cfg_attr(feature = "knuffel", knuffel(argument))]
- pub name: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub id: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub description: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub ref_: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(child, unwrap(argument)))]
- pub min: Option<usize>,
- #[cfg_attr(feature = "knuffel", knuffel(child, unwrap(argument)))]
- pub max: Option<usize>,
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "prop")))]
- pub props: Vec<Prop>,
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "value")))]
- pub values: Vec<Value>,
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "children")))]
- pub children: Vec<Children>,
- }
+#[derive(Debug, PartialEq, Eq, Default)]
+#[cfg_attr(feature = "knuffel", derive(Decode))]
+pub struct Node {
+ #[cfg_attr(feature = "knuffel", knuffel(argument))]
+ pub name: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub id: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub description: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub ref_: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(child, unwrap(argument)))]
+ pub min: Option<usize>,
+ #[cfg_attr(feature = "knuffel", knuffel(child, unwrap(argument)))]
+ pub max: Option<usize>,
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "prop")))]
+ pub props: Vec<Prop>,
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "value")))]
+ pub values: Vec<Value>,
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "children")))]
+ pub children: Vec<Children>,
+}
- impl BuildFromRef for Node {
- fn ref_to(query: impl Into<String>) -> Self {
- Self {
- ref_: Some(query.into()),
- ..Self::default()
- }
+impl BuildFromRef for Node {
+ fn ref_to(query: impl Into<String>) -> Self {
+ Self {
+ ref_: Some(query.into()),
+ ..Self::default()
}
}
+}
- #[derive(Debug, PartialEq, Eq, Default)]
- #[cfg_attr(feature = "knuffel", derive(Decode))]
- pub struct Prop {
- #[cfg_attr(feature = "knuffel", knuffel(argument))]
- pub key: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub id: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub description: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub ref_: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(child))]
- pub required: bool,
- #[cfg_attr(feature = "knuffel", knuffel(children))]
- pub validations: Vec<Validation>,
- }
+#[derive(Debug, PartialEq, Eq, Default)]
+#[cfg_attr(feature = "knuffel", derive(Decode))]
+pub struct Prop {
+ #[cfg_attr(feature = "knuffel", knuffel(argument))]
+ pub key: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub id: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub description: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub ref_: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(child))]
+ pub required: bool,
+ #[cfg_attr(feature = "knuffel", knuffel(children))]
+ pub validations: Vec<Validation>,
+}
- impl BuildFromRef for Prop {
- fn ref_to(query: impl Into<String>) -> Self {
- Self {
- ref_: Some(query.into()),
- ..Self::default()
- }
+impl BuildFromRef for Prop {
+ fn ref_to(query: impl Into<String>) -> Self {
+ Self {
+ ref_: Some(query.into()),
+ ..Self::default()
}
}
+}
- #[derive(Debug, PartialEq, Eq, Default)]
- #[cfg_attr(feature = "knuffel", derive(Decode))]
- pub struct Value {
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub id: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub description: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub ref_: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(child, unwrap(argument)))]
- pub min: Option<usize>,
- #[cfg_attr(feature = "knuffel", knuffel(child, unwrap(argument)))]
- pub max: Option<usize>,
- #[cfg_attr(feature = "knuffel", knuffel(children))]
- pub validations: Vec<Validation>,
- }
+#[derive(Debug, PartialEq, Eq, Default)]
+#[cfg_attr(feature = "knuffel", derive(Decode))]
+pub struct Value {
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub id: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub description: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub ref_: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(child, unwrap(argument)))]
+ pub min: Option<usize>,
+ #[cfg_attr(feature = "knuffel", knuffel(child, unwrap(argument)))]
+ pub max: Option<usize>,
+ #[cfg_attr(feature = "knuffel", knuffel(children))]
+ pub validations: Vec<Validation>,
+}
- impl BuildFromRef for Value {
- fn ref_to(query: impl Into<String>) -> Self {
- Self {
- ref_: Some(query.into()),
- ..Self::default()
- }
+impl BuildFromRef for Value {
+ fn ref_to(query: impl Into<String>) -> Self {
+ Self {
+ ref_: Some(query.into()),
+ ..Self::default()
}
}
+}
- #[derive(Debug, PartialEq, Eq, Default)]
- #[cfg_attr(feature = "knuffel", derive(Decode))]
- pub struct Children {
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub id: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub description: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(property))]
- pub ref_: Option<String>,
- #[cfg_attr(feature = "knuffel", knuffel(children(name = "node")))]
- pub nodes: Vec<Node>,
- }
+#[derive(Debug, PartialEq, Eq, Default)]
+#[cfg_attr(feature = "knuffel", derive(Decode))]
+pub struct Children {
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub id: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub description: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(property))]
+ pub ref_: Option<String>,
+ #[cfg_attr(feature = "knuffel", knuffel(children(name = "node")))]
+ pub nodes: Vec<Node>,
+}
- impl BuildFromRef for Children {
- fn ref_to(query: impl Into<String>) -> Self {
- Self {
- ref_: Some(query.into()),
- ..Self::default()
- }
+impl BuildFromRef for Children {
+ fn ref_to(query: impl Into<String>) -> Self {
+ Self {
+ ref_: Some(query.into()),
+ ..Self::default()
}
}
+}
- pub use validation::Validation;
-
- pub mod validation {
- #[cfg(feature = "knuffel")]
- use knuffel::{Decode, DecodeScalar};
-
- #[derive(Debug, PartialEq, Eq)]
- #[cfg_attr(feature = "knuffel", derive(Decode))]
- pub enum Validation {
- Type(#[cfg_attr(feature = "knuffel", knuffel(argument))] String),
- Enum(#[cfg_attr(feature = "knuffel", knuffel(arguments))] Vec<String>),
- Pattern(#[cfg_attr(feature = "knuffel", knuffel(argument))] String),
- Format(#[cfg_attr(feature = "knuffel", knuffel(arguments))] Vec<Format>),
- }
+#[derive(Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "knuffel", derive(Decode))]
+pub enum Validation {
+ Type(#[cfg_attr(feature = "knuffel", knuffel(argument))] String),
+ Enum(#[cfg_attr(feature = "knuffel", knuffel(arguments))] Vec<String>),
+ Pattern(#[cfg_attr(feature = "knuffel", knuffel(argument))] String),
+ Format(#[cfg_attr(feature = "knuffel", knuffel(arguments))] Vec<Format>),
+}
- #[derive(Debug, PartialEq, Eq)]
- #[cfg_attr(feature = "knuffel", derive(DecodeScalar))]
- pub enum Format {
- DateTime,
- Date,
- Time,
- Duration,
- Decimal,
- Currency,
- Country2,
- Country3,
- CountrySubdivision,
- Email,
- IdnEmail,
- Hostname,
- IdnHostname,
- Ipv4,
- Ipv6,
- Url,
- UrlReference,
- Irl,
- IrlReference,
- UrlTemplate,
- Uuid,
- Regex,
- Base64,
- KdlQuery,
- }
- }
+#[derive(Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "knuffel", derive(DecodeScalar))]
+pub enum Format {
+ DateTime,
+ Date,
+ Time,
+ Duration,
+ Decimal,
+ Currency,
+ Country2,
+ Country3,
+ CountrySubdivision,
+ Email,
+ IdnEmail,
+ Hostname,
+ IdnHostname,
+ Ipv4,
+ Ipv6,
+ Url,
+ UrlReference,
+ Irl,
+ IrlReference,
+ UrlTemplate,
+ Uuid,
+ Regex,
+ Base64,
+ KdlQuery,
}
mod schema_schema;