Add full file checker CheckInsertFinalNewLineRule.
This commit is contained in:
@@ -6,7 +6,10 @@ import (
|
||||
)
|
||||
|
||||
var fullFileCheckers = map[string]FullFileChecker{
|
||||
"end_of_line": CheckEndOfLineRule,
|
||||
"end_of_line": CheckEndOfLineRule,
|
||||
"insert_final_newline": CheckInsertFinalNewLineRule,
|
||||
// @todo - add checker for charset.
|
||||
// "charset": CheckCharsetRule,
|
||||
}
|
||||
|
||||
type FullFileChecker func(ruleValue string, fileContent string) *FullFileCheckResult
|
||||
@@ -59,3 +62,36 @@ func CheckEndOfLineRule(ruleValue string, fileContent string) *FullFileCheckResu
|
||||
|
||||
return &FullFileCheckResult{isOk: true}
|
||||
}
|
||||
|
||||
var endsWithFinalNewLineRegexp = regexp.MustCompile(`(\n|\r|\r\n)$`)
|
||||
|
||||
func CheckInsertFinalNewLineRule(ruleValue string, fileContent string) *FullFileCheckResult {
|
||||
// Valid rules values are "true" or "false". The values are case insensitive.
|
||||
ruleValueLowercase := strings.ToLower(ruleValue)
|
||||
|
||||
if ruleValueLowercase != "true" && ruleValueLowercase != "false" {
|
||||
return &FullFileCheckResult{isOk: false, messageIfNotOk: "insert_final_new_line value should be true or false, is: " + ruleValue}
|
||||
}
|
||||
|
||||
if len(fileContent) == 0 {
|
||||
return &FullFileCheckResult{isOk: true}
|
||||
}
|
||||
|
||||
if ruleValueLowercase == "true" {
|
||||
if endsWithFinalNewLineRegexp.MatchString(fileContent) {
|
||||
return &FullFileCheckResult{isOk: true}
|
||||
} else {
|
||||
return &FullFileCheckResult{isOk: false, messageIfNotOk: "should end with an empty line but it does not"}
|
||||
}
|
||||
}
|
||||
|
||||
if ruleValueLowercase == "false" {
|
||||
if !endsWithFinalNewLineRegexp.MatchString(fileContent) {
|
||||
return &FullFileCheckResult{isOk: true}
|
||||
} else {
|
||||
return &FullFileCheckResult{isOk: false, messageIfNotOk: "should not end with an empty line but it does"}
|
||||
}
|
||||
}
|
||||
|
||||
return &FullFileCheckResult{isOk: false, messageIfNotOk: "unexpected condition"}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user