Skip to content

Commit e351bc3

Browse files
committed
Pretty print grid-template
1 parent 79b00f9 commit e351bc3

File tree

2 files changed

+62
-3
lines changed

2 files changed

+62
-3
lines changed

src/lib.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6215,6 +6215,27 @@ mod tests {
62156215
".foo { grid-template: [linename1 linename2] 100px repeat(auto-fit, [linename1] 300px) [linename3] / [linename1 linename2] 100px repeat(auto-fit, [linename1] 300px) [linename3]; }",
62166216
".foo{grid-template:[linename1 linename2]100px repeat(auto-fit,[linename1]300px)[linename3]/[linename1 linename2]100px repeat(auto-fit,[linename1]300px)[linename3]}"
62176217
);
6218+
6219+
test(
6220+
".foo{grid-template:[header-top]\"a a a\"[header-bottom main-top]\"b b b\"1fr[main-bottom]/auto 1fr auto}",
6221+
indoc!{r#"
6222+
.foo {
6223+
grid-template: [header-top] "a a a" [header-bottom]
6224+
[main-top] "b b b" 1fr [main-bottom]
6225+
/ auto 1fr auto;
6226+
}
6227+
"#}
6228+
);
6229+
test(
6230+
".foo{grid-template:[header-top]\"a a a\"[main-top]\"b b b\"1fr/auto 1fr auto}",
6231+
indoc!{r#"
6232+
.foo {
6233+
grid-template: [header-top] "a a a"
6234+
[main-top] "b b b" 1fr
6235+
/ auto 1fr auto;
6236+
}
6237+
"#}
6238+
);
62186239
}
62196240

62206241
#[test]

src/properties/grid.rs

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ fn parse_line_names<'i, 't>(input: &mut Parser<'i, 't>) -> Result<SmallVec<[Cust
266266
})
267267
}
268268

269-
fn serialize_line_names<W>(names: &SmallVec<[CustomIdent; 1]>, dest: &mut Printer<W>) -> std::fmt::Result where W: std::fmt::Write {
269+
fn serialize_line_names<W>(names: &[CustomIdent], dest: &mut Printer<W>) -> std::fmt::Result where W: std::fmt::Write {
270270
dest.write_char('[')?;
271271
let mut first = true;
272272
for name in names {
@@ -655,11 +655,41 @@ impl ToCss for GridTemplate {
655655
let mut items_iter = track_list.items.iter();
656656

657657
let mut next = areas_iter.next();
658+
let mut first = true;
659+
let mut indented = false;
658660
while next.is_some() {
661+
macro_rules! newline {
662+
() => {
663+
if !dest.minify {
664+
if !indented {
665+
// Indent by the width of "grid-template: ", so the rows line up.
666+
dest.indent_by(15);
667+
indented = true;
668+
}
669+
dest.newline()?;
670+
}
671+
};
672+
}
673+
659674
if let Some(line_names) = line_names_iter.next() {
660675
if !line_names.is_empty() {
661-
serialize_line_names(line_names, dest)?;
676+
if !dest.minify && line_names.len() == 2 {
677+
dest.whitespace()?;
678+
serialize_line_names(&line_names[0..1], dest)?;
679+
newline!();
680+
serialize_line_names(&line_names[1..], dest)?;
681+
} else {
682+
if !first {
683+
newline!();
684+
}
685+
serialize_line_names(line_names, dest)?;
686+
}
687+
dest.whitespace()?;
688+
} else {
689+
newline!();
662690
}
691+
} else {
692+
newline!();
663693
}
664694

665695
self.areas.write_string(dest, &mut areas_iter, &mut next)?;
@@ -673,18 +703,26 @@ impl ToCss for GridTemplate {
673703
}
674704
}
675705
}
706+
707+
first = false;
676708
}
677709

678710
if let Some(line_names) = line_names_iter.next() {
679711
if !line_names.is_empty() {
712+
dest.whitespace()?;
680713
serialize_line_names(line_names, dest)?;
681714
}
682715
}
683716

684717
if let TrackSizing::TrackList(track_list) = &self.columns {
685-
dest.delim('/', true)?;
718+
dest.newline()?;
719+
dest.delim('/', false)?;
686720
track_list.to_css(dest)?;
687721
}
722+
723+
if indented {
724+
dest.dedent_by(15);
725+
}
688726
}
689727
}
690728

0 commit comments

Comments
 (0)