refactor(serde): use serde derive macro
This commit is contained in:
parent
c86fef91a0
commit
bd1fc756bd
22 changed files with 203 additions and 422 deletions
|
|
@ -1,9 +1,11 @@
|
|||
use memchr::{memchr, memchr_iter};
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct Block<'a> {
|
||||
pub name: &'a str,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub args: Option<&'a str>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,20 +5,25 @@ use memchr::memchr;
|
|||
///
|
||||
/// there are two types of clock: *closed* clock and *running* clock.
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub enum Clock<'a> {
|
||||
/// closed Clock
|
||||
Closed {
|
||||
start: Datetime<'a>,
|
||||
end: Datetime<'a>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
repeater: Option<&'a str>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
delay: Option<&'a str>,
|
||||
duration: &'a str,
|
||||
},
|
||||
/// running Clock
|
||||
Running {
|
||||
start: Datetime<'a>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
repeater: Option<&'a str>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
delay: Option<&'a str>,
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
use memchr::{memchr, memchr2};
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub enum Cookie<'a> {
|
||||
Percent(&'a str),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
use memchr::memchr_iter;
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct Drawer<'a> {
|
||||
pub name: &'a str,
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
use memchr::{memchr, memchr_iter};
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct DynBlock<'a> {
|
||||
pub block_name: &'a str,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub arguments: Option<&'a str>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
use memchr::memchr;
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct FnDef<'a> {
|
||||
pub label: &'a str,
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
use memchr::{memchr2, memchr2_iter};
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct FnRef<'a> {
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub label: Option<&'a str>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub definition: Option<&'a str>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,17 +7,21 @@ pub const DEFAULT_TODO_KEYWORDS: &[&str] =
|
|||
&["TODO", "DONE", "NEXT", "WAITING", "LATER", "CANCELLED"];
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct Headline<'a> {
|
||||
/// headline level, number of stars
|
||||
pub level: usize,
|
||||
/// priority cookie
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub priority: Option<char>,
|
||||
/// headline tags, including the sparated colons
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Vec::is_empty"))]
|
||||
pub tags: Vec<&'a str>,
|
||||
/// headline title
|
||||
pub title: &'a str,
|
||||
/// headline keyword
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub keyword: Option<&'a str>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,14 @@
|
|||
use memchr::{memchr, memchr2};
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct InlineCall<'a> {
|
||||
pub name: &'a str,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub inside_header: Option<&'a str>,
|
||||
pub args: &'a str,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub end_header: Option<&'a str>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
use memchr::{memchr, memchr2};
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct InlineSrc<'a> {
|
||||
pub lang: &'a str,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub option: Option<&'a str>,
|
||||
pub body: &'a str,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,17 @@
|
|||
use memchr::{memchr, memchr2};
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct Keyword<'a> {
|
||||
pub key: &'a str,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub option: Option<&'a str>,
|
||||
pub value: &'a str,
|
||||
}
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct BabelCall<'a> {
|
||||
pub key: &'a str,
|
||||
|
|
|
|||
|
|
@ -2,9 +2,11 @@ use jetscii::Substring;
|
|||
use memchr::memchr;
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct Link<'a> {
|
||||
pub path: &'a str,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub desc: Option<&'a str>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ use memchr::memchr_iter;
|
|||
use std::iter::once;
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct List {
|
||||
pub indent: usize,
|
||||
|
|
@ -61,6 +62,7 @@ impl List {
|
|||
}
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct ListItem<'a> {
|
||||
pub bullet: &'a str,
|
||||
|
|
|
|||
|
|
@ -2,9 +2,11 @@ use jetscii::Substring;
|
|||
use memchr::memchr2;
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct Macros<'a> {
|
||||
pub name: &'a str,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub arguments: Option<&'a str>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ mod snippet;
|
|||
mod target;
|
||||
mod timestamp;
|
||||
|
||||
pub mod emphasis;
|
||||
pub(crate) mod emphasis;
|
||||
|
||||
pub use self::{
|
||||
block::Block,
|
||||
|
|
@ -48,187 +48,304 @@ pub use self::{
|
|||
use indextree::NodeId;
|
||||
|
||||
#[derive(Debug)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[cfg_attr(feature = "serde", serde(tag = "type"))]
|
||||
#[cfg_attr(feature = "serde", serde(rename_all = "snake_case"))]
|
||||
pub enum Element<'a> {
|
||||
Root,
|
||||
Block {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
block: Block<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
BabelCall {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
call: BabelCall<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Section {
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
Clock {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
clock: Clock<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Cookie {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
cookie: Cookie<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
RadioTarget {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
radio_target: RadioTarget<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Drawer {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
drawer: Drawer<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
Document {
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
DynBlock {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
dyn_block: DynBlock<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
FnDef {
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
fn_def: FnDef<'a>,
|
||||
},
|
||||
FnRef {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
fn_ref: FnRef<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Headline {
|
||||
begin: usize,
|
||||
end: usize,
|
||||
contents_begin: usize,
|
||||
contents_end: usize,
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
headline: Headline<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
InlineCall {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
inline_call: InlineCall<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
InlineSrc {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
inline_src: InlineSrc<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Keyword {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
keyword: Keyword<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Link {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
link: Link<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
List {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
list: List,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
ListItem {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
list_item: ListItem<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
Macros {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
macros: Macros<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Planning {
|
||||
#[cfg_attr(feature = "serde", serde(skip))]
|
||||
deadline: Option<NodeId>,
|
||||
#[cfg_attr(feature = "serde", serde(skip))]
|
||||
scheduled: Option<NodeId>,
|
||||
#[cfg_attr(feature = "serde", serde(skip))]
|
||||
closed: Option<NodeId>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Snippet {
|
||||
begin: usize,
|
||||
end: usize,
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
snippet: Snippet<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Text {
|
||||
value: &'a str,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Paragraph {
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
Rule {
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Timestamp {
|
||||
begin: usize,
|
||||
end: usize,
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
timestamp: Timestamp<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Target {
|
||||
#[cfg_attr(feature = "serde", serde(flatten))]
|
||||
target: Target<'a>,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
},
|
||||
Bold {
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
Strike {
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
Italic {
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
Underline {
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
contents_end: usize,
|
||||
},
|
||||
Verbatim {
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
value: &'a str,
|
||||
},
|
||||
Code {
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
begin: usize,
|
||||
#[cfg_attr(all(feature = "serde", not(feature = "extra-serde-info")), serde(skip))]
|
||||
end: usize,
|
||||
value: &'a str,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -3,13 +3,17 @@ use memchr::memchr;
|
|||
|
||||
/// palnning elements
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct Planning<'a> {
|
||||
/// the date when the task should be done
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub deadline: Option<&'a Timestamp<'a>>,
|
||||
/// the date when you should start working on the task
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub scheduled: Option<&'a Timestamp<'a>>,
|
||||
/// the date when the task is closed
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub closed: Option<&'a Timestamp<'a>>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ use jetscii::Substring;
|
|||
|
||||
// TODO: text-markup, entities, latex-fragments, subscript and superscript
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct RadioTarget<'a> {
|
||||
contents: &'a str,
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ use jetscii::Substring;
|
|||
use memchr::memchr;
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct Snippet<'a> {
|
||||
pub name: &'a str,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
use jetscii::Substring;
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub struct Target<'a> {
|
||||
pub target: &'a str,
|
||||
|
|
|
|||
|
|
@ -2,9 +2,11 @@ use memchr::memchr;
|
|||
use std::str::FromStr;
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct Datetime<'a> {
|
||||
pub(crate) date: &'a str,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub(crate) time: Option<&'a str>,
|
||||
pub(crate) dayname: &'a str,
|
||||
}
|
||||
|
|
@ -76,7 +78,8 @@ mod chrono {
|
|||
}
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
pub enum RepeaterType {
|
||||
Cumulate,
|
||||
CatchUp,
|
||||
|
|
@ -84,6 +87,7 @@ pub enum RepeaterType {
|
|||
}
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
pub enum DelayType {
|
||||
All,
|
||||
|
|
@ -91,6 +95,7 @@ pub enum DelayType {
|
|||
}
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
pub enum TimeUnit {
|
||||
Hour,
|
||||
|
|
@ -101,6 +106,7 @@ pub enum TimeUnit {
|
|||
}
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
pub struct Repeater {
|
||||
pub ty: RepeaterType,
|
||||
|
|
@ -109,6 +115,7 @@ pub struct Repeater {
|
|||
}
|
||||
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
pub struct Delay {
|
||||
pub ty: DelayType,
|
||||
|
|
@ -118,28 +125,37 @@ pub struct Delay {
|
|||
|
||||
/// timestamp obejcts
|
||||
#[cfg_attr(test, derive(PartialEq))]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[derive(Debug)]
|
||||
pub enum Timestamp<'a> {
|
||||
Active {
|
||||
start: Datetime<'a>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
repeater: Option<&'a str>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
delay: Option<&'a str>,
|
||||
},
|
||||
Inactive {
|
||||
start: Datetime<'a>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
repeater: Option<&'a str>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
delay: Option<&'a str>,
|
||||
},
|
||||
ActiveRange {
|
||||
start: Datetime<'a>,
|
||||
end: Datetime<'a>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
repeater: Option<&'a str>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
delay: Option<&'a str>,
|
||||
},
|
||||
InactiveRange {
|
||||
start: Datetime<'a>,
|
||||
end: Datetime<'a>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
repeater: Option<&'a str>,
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
delay: Option<&'a str>,
|
||||
},
|
||||
Diary(&'a str),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue