Skip to content

Commit d150e9b

Browse files
committed
Fix comment handling / output formatting
1 parent d68a2dd commit d150e9b

10 files changed

+1457
-1270
lines changed

ast/ast.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,6 @@ func (b Branch) String() string {
607607
s.WriteString(block.String())
608608
}
609609
s.WriteString(b.ElseBlock.String())
610-
s.WriteString("\n")
611610
return s.String()
612611
}
613612

@@ -638,6 +637,9 @@ func (ib IfBlock) String() string {
638637
if block == nil {
639638
continue
640639
}
640+
if ss.Len() > 0 {
641+
ss.WriteString("\n")
642+
}
641643
ss.WriteString(fmt.Sprintf("%v", block))
642644
if ss.Len() > 0 {
643645
ss.WriteString("\n")
@@ -650,6 +652,7 @@ func (ib IfBlock) String() string {
650652
s.WriteString(prefix(ss.String(), true))
651653

652654
s.WriteString("}")
655+
653656
return s.String()
654657
}
655658

@@ -685,6 +688,9 @@ func (eib ElseIfBlock) String() string {
685688
if block == nil {
686689
continue
687690
}
691+
if ss.Len() > 0 {
692+
ss.WriteString("\n")
693+
}
688694
ss.WriteString(fmt.Sprint(block))
689695
if ss.Len() > 0 {
690696
ss.WriteString("\n")
@@ -733,6 +739,9 @@ func (eb ElseBlock) String() string {
733739
if block == nil {
734740
continue
735741
}
742+
if ss.Len() > 0 {
743+
ss.WriteString("\n")
744+
}
736745
ss.WriteString(fmt.Sprint(block))
737746
if ss.Len() > 0 {
738747
ss.WriteString("\n")

diff_test.go

+20-8
Original file line numberDiff line numberDiff line change
@@ -22,30 +22,42 @@ func printDiff(want, got string) string {
2222
switch diff.Type {
2323
case diffmatchpatch.DiffInsert:
2424
buff.WriteString("\x1b[32m")
25-
buff.WriteString("+ ")
26-
buff.WriteString(highlightWhitespaces(text, "\x1b[42m"))
25+
lines := strings.Split(strings.TrimRight(text, "\n"), "\n")
26+
for _, line := range lines {
27+
buff.WriteString("+ ")
28+
buff.WriteString(highlightWhitespaces(line, "\x1b[42m") + "\n")
29+
}
2730
buff.WriteString("\x1b[0m")
2831
if !strings.HasSuffix(text, "\n") {
2932
buff.WriteString("\n\\ No newline at end of file\n")
3033
}
3134
case diffmatchpatch.DiffDelete:
3235
buff.WriteString("\x1b[31m")
33-
buff.WriteString("- ")
34-
buff.WriteString(highlightWhitespaces(text, "\x1b[41m"))
36+
lines := strings.Split(strings.TrimRight(text, "\n"), "\n")
37+
for _, line := range lines {
38+
buff.WriteString("- ")
39+
buff.WriteString(highlightWhitespaces(line, "\x1b[41m") + "\n")
40+
}
3541
buff.WriteString("\x1b[0m")
3642
if !strings.HasSuffix(text, "\n") {
3743
buff.WriteString("\n\\ No newline at end of file\n")
3844
}
45+
if !strings.HasSuffix(text, "\n") {
46+
buff.WriteString("\n\\ No newline at end of file\n")
47+
}
3948
case diffmatchpatch.DiffEqual:
40-
buff.WriteString(" ")
41-
buff.WriteString(text)
49+
lines := strings.Split(strings.TrimRight(text, "\n"), "\n")
50+
for _, line := range lines {
51+
buff.WriteString(" ")
52+
buff.WriteString(line + "\n")
53+
}
4254
}
4355
}
4456
return buff.String()
4557
}
4658

47-
var tailingWhitespace = regexp.MustCompile(`([ \t]+)\n$`)
59+
var tailingWhitespace = regexp.MustCompile(`([ \t]+)$`)
4860

4961
func highlightWhitespaces(in string, color string) string {
50-
return tailingWhitespace.ReplaceAllString(in, color+"$1\x1b[49m\n")
62+
return tailingWhitespace.ReplaceAllString(in, color+"$1\x1b[49m")
5163
}

0 commit comments

Comments
 (0)