diff --git a/Cargo.toml b/Cargo.toml index e7cb35a..7fab393 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,11 +9,14 @@ edition = "2018" license = "MIT" keywords = ["orgmode", "emacs", "parser"] +[package.metadata.docs.rs] +all-features = true + [badges] travis-ci = { repository = "PoiScript/orgize" } [features] -default = ["serde", "chrono"] +default = ["serde"] extra-serde-info = ["serde"] [dependencies] diff --git a/src/elements/timestamp.rs b/src/elements/timestamp.rs index 7a145b3..5f0796d 100644 --- a/src/elements/timestamp.rs +++ b/src/elements/timestamp.rs @@ -1,3 +1,5 @@ +#[cfg(feature = "chrono")] +use chrono::*; use memchr::memchr; use std::str::FromStr; @@ -47,33 +49,30 @@ impl Datetime<'_> { pub fn dayname(&self) -> &str { self.dayname } -} -#[cfg(feature = "chrono")] -mod chrono { - use super::Datetime; - use chrono::*; + #[cfg(feature = "chrono")] + pub fn naive_date(&self) -> NaiveDate { + NaiveDate::from_ymd(self.year() as i32, self.month(), self.day()) + } - impl<'a> Datetime<'a> { - pub fn naive_date(&self) -> NaiveDate { - NaiveDate::from_ymd(self.year() as i32, self.month(), self.day()) - } + #[cfg(feature = "chrono")] + pub fn naive_time(&self) -> NaiveTime { + NaiveTime::from_hms(self.hour().unwrap_or(0), self.minute().unwrap_or(0), 0) + } - pub fn naive_time(&self) -> NaiveTime { - NaiveTime::from_hms(self.hour().unwrap_or(0), self.minute().unwrap_or(0), 0) - } + #[cfg(feature = "chrono")] + pub fn naive_date_time(&self) -> NaiveDateTime { + NaiveDateTime::new(self.naive_date(), self.naive_time()) + } - pub fn naive_date_time(&self) -> NaiveDateTime { - NaiveDateTime::new(self.naive_date(), self.naive_time()) - } + #[cfg(feature = "chrono")] + pub fn date_time(&self, offset: Tz::Offset) -> DateTime { + DateTime::from_utc(self.naive_date_time(), offset) + } - pub fn date_time(&self, offset: Tz::Offset) -> DateTime { - DateTime::from_utc(self.naive_date_time(), offset) - } - - pub fn date(&self, offset: Tz::Offset) -> Date { - Date::from_utc(self.naive_date(), offset) - } + #[cfg(feature = "chrono")] + pub fn date(&self, offset: Tz::Offset) -> Date { + Date::from_utc(self.naive_date(), offset) } } diff --git a/src/org.rs b/src/org.rs index 5ed9c83..e5fe7fc 100644 --- a/src/org.rs +++ b/src/org.rs @@ -250,9 +250,9 @@ impl<'a> Org<'a> { fn parse_elements_children(&mut self, begin: usize, end: usize, node: NodeId) { let text = &self.text[begin..end]; - let mut pos = 0; + let mut pos = skip_empty_lines(text); - if let Some((ty, off)) = self.parse_element(begin, end) { + if let Some((ty, off)) = self.parse_element(begin + pos, end) { let new_node = self.arena.new_node(ty); node.append(new_node, &mut self.arena).unwrap(); pos += off + skip_empty_lines(&text[off..]);