@@ -56,14 +56,11 @@ struct Segment<'a>(
5656#[ derive( Clone , serde:: Deserialize ) ]
5757#[ serde( untagged) ]
5858pub ( 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
6966impl 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