diff --git a/editorconfig/line_fixers.go b/editorconfig/line_fixers.go index 9351e37..ec53308 100644 --- a/editorconfig/line_fixers.go +++ b/editorconfig/line_fixers.go @@ -53,3 +53,11 @@ func FixUndividableIndentationToNearestSpacesAmount(ruleValueNumberOfSpaces stri return line } + +func FixTrimTrailingWhitespaceRule(ruleValue string, line string) string { + if strings.ToLower(ruleValue) != "true" { + return line + } + + return endsWithTabsAndSpacesRegexp.ReplaceAllString(line, "") +} diff --git a/editorconfig/line_fixers_test.go b/editorconfig/line_fixers_test.go index ba7e569..46b61cd 100644 --- a/editorconfig/line_fixers_test.go +++ b/editorconfig/line_fixers_test.go @@ -70,3 +70,21 @@ func TestFixUndividableIndentationToNearestSpacesAmount(t *testing.T) { t.Error("Unexpected result: " + result) } } + +func TestFixTrimTrailingWhitespaceRule(t *testing.T) { + if FixTrimTrailingWhitespaceRule("true", "") != "" { + t.Error() + } + + if FixTrimTrailingWhitespaceRule("true", " a b c") != " a b c" { + t.Error() + } + + if FixTrimTrailingWhitespaceRule("true", "abc \t\t \t \t \t ") != "abc" { + t.Error() + } + + if FixTrimTrailingWhitespaceRule("false", "abc \t\t \t \t \t ") != "abc \t\t \t \t \t " { + t.Error() + } +}