Skip to content

Commit 46212e2

Browse files
authored
Merge pull request #182 from epage/cgen
Expose `{{ "now" | date "%Y" }}` for carg-generate
2 parents a9c61be + 6a1e0a0 commit 46212e2

File tree

2 files changed

+37
-7
lines changed

2 files changed

+37
-7
lines changed

src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ extern crate serde;
4141
extern crate serde_yaml;
4242

4343
mod error;
44-
mod filters;
4544
mod parser;
46-
mod tags;
4745
mod template;
4846
mod value;
4947

5048
pub mod compiler;
49+
pub mod filters;
5150
pub mod interpreter;
51+
pub mod tags;
5252

5353
pub use error::Error;
5454
pub use parser::{Parser, ParserBuilder};

src/value/scalar.rs

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -237,11 +237,21 @@ mod friendly_date {
237237
}
238238

239239
fn parse_date(s: &str) -> Option<Date> {
240-
let formats = ["%d %B %Y %H:%M:%S %z", "%Y-%m-%d %H:%M:%S %z"];
241-
formats
242-
.iter()
243-
.filter_map(|f| Date::parse_from_str(s, f).ok())
244-
.next()
240+
match s {
241+
"now" | "today" => {
242+
let now = chrono::offset::Utc::now();
243+
let now = now.naive_utc();
244+
let now = chrono::DateTime::from_utc(now, chrono::offset::FixedOffset::east(0));
245+
Some(now)
246+
}
247+
_ => {
248+
let formats = ["%d %B %Y %H:%M:%S %z", "%Y-%m-%d %H:%M:%S %z"];
249+
formats
250+
.iter()
251+
.filter_map(|f| Date::parse_from_str(s, f).ok())
252+
.next()
253+
}
254+
}
245255
}
246256

247257
#[cfg(test)]
@@ -457,4 +467,24 @@ mod test {
457467
assert_eq!(empty, TRUE);
458468
assert!(empty.is_truthy());
459469
}
470+
471+
#[test]
472+
fn parse_date_empty_is_bad() {
473+
assert!(parse_date("").is_none());
474+
}
475+
476+
#[test]
477+
fn parse_date_bad() {
478+
assert!(parse_date("aaaaa").is_none());
479+
}
480+
481+
#[test]
482+
fn parse_date_now() {
483+
assert!(parse_date("now").is_some());
484+
}
485+
486+
#[test]
487+
fn parse_date_today() {
488+
assert!(parse_date("today").is_some());
489+
}
460490
}

0 commit comments

Comments
 (0)