Skip to content

Commit 8a4d573

Browse files
committed
Add markdown support for extra fields
1 parent a220b84 commit 8a4d573

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "blades"
3-
version = "0.1.1"
3+
version = "0.1.2"
44
authors = ["Maroš Grego <maros@grego.site>"]
55
edition = "2018"
66
description = "Blazing fast dead simple static site generator"

src/types.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,11 @@ struct Segment<'a>(
5656
#[derive(Clone, serde::Deserialize)]
5757
#[serde(untagged)]
5858
pub(crate) enum Any<'a> {
59+
String(#[serde(borrow)] Cow<'a, str>),
5960
Number(f64),
60-
#[serde(borrow)]
61-
String(Cow<'a, str>),
6261
DateTime(DateTime),
63-
#[serde(borrow)]
6462
List(Vec<Any<'a>>),
65-
#[serde(borrow)]
66-
Map(HashMap<Cow<'a, str>, Any<'a>>),
63+
Map(HashMap<&'a str, Any<'a>>),
6764
}
6865

6966
impl Templates {
@@ -178,15 +175,17 @@ impl<'a> Content for Any<'a> {
178175
match self {
179176
Any::List(vec) => !vec.is_empty(),
180177
Any::Map(map) => !map.is_empty(),
181-
_ => false,
178+
Any::String(s) => !s.is_empty(),
179+
Any::Number(n) => n.abs() > f64::EPSILON,
180+
_ => true,
182181
}
183182
}
184183

185184
#[inline]
186185
fn render_escaped<E: Encoder>(&self, encoder: &mut E) -> Result<(), E::Error> {
187186
match self {
187+
Any::String(s) => s.render_cmark(encoder),
188188
Any::Number(n) => n.render_escaped(encoder),
189-
Any::String(s) => s.render_escaped(encoder),
190189
Any::DateTime(dt) => dt.render_escaped(encoder),
191190
Any::List(vec) => vec.render_escaped(encoder),
192191
Any::Map(map) => map.render_escaped(encoder),
@@ -196,8 +195,8 @@ impl<'a> Content for Any<'a> {
196195
#[inline]
197196
fn render_unescaped<E: Encoder>(&self, encoder: &mut E) -> Result<(), E::Error> {
198197
match self {
199-
Any::Number(n) => n.render_unescaped(encoder),
200198
Any::String(s) => s.render_unescaped(encoder),
199+
Any::Number(n) => n.render_unescaped(encoder),
201200
Any::DateTime(dt) => dt.render_unescaped(encoder),
202201
Any::List(vec) => vec.render_unescaped(encoder),
203202
Any::Map(map) => map.render_unescaped(encoder),
@@ -213,7 +212,8 @@ impl<'a> Content for Any<'a> {
213212
match self {
214213
Any::List(vec) => vec.render_section(section, encoder),
215214
Any::Map(map) => map.render_section(section, encoder),
216-
_ => section.render(encoder),
215+
Any::DateTime(dt) => dt.render_section(section, encoder),
216+
_ => if self.is_truthy() { section.render(encoder) } else { Ok(()) },
217217
}
218218
}
219219

0 commit comments

Comments
 (0)