Files
editorconfig-cli/editorconfig/utils.go
2016-07-04 13:54:44 +01:00

57 lines
1.5 KiB
Go

package editorconfig
import (
"fmt"
"os"
"path/filepath"
"regexp"
)
var filePathSeparatorRegex = regexp.QuoteMeta(string(filepath.Separator))
var endOfPathRegex, _ = regexp.Compile(`[` + filePathSeparatorRegex + `][^` + filePathSeparatorRegex + `]+$`)
var lfRegexp = regexp.MustCompile(`\n`)
var crRegexp = regexp.MustCompile(`\r`)
var crlfRegexp = regexp.MustCompile(`\r\n`)
var endsWithFinalNewLineRegexp = regexp.MustCompile(`(\n|\r|\r\n)$`)
var hasIndentationRegexp = regexp.MustCompile(`^[\t ]`)
var hasNoIndentationRegexp = regexp.MustCompile(`^([^\t ]|$)`)
var indentedWithMixedTabsAndSpacesRegexp = regexp.MustCompile(`^(\t+ +| +\t+)`)
var indentedWithTabsRegexp = regexp.MustCompile(`^\t+`)
var indentedWithTabsThenCommentLineRegexp = regexp.MustCompile(`^\t+ \*`)
var indentedWithSpacesRegexp = regexp.MustCompile(`^ +`)
func GetParentDir(path string) string {
return endOfPathRegex.ReplaceAllString(path, "")
}
func ContainsString(haystack []string, needle string) bool {
for _, s := range haystack {
if s == needle {
return true
}
}
return false
}
var lineEndingsRegexp = regexp.MustCompile("(\r\n|\n|\r)")
func SplitIntoLines(s string) []string {
return lineEndingsRegexp.Split(s, -1)
}
func ExitBecauseOfInternalError(err string) {
fmt.Println(err)
os.Exit(2)
}
func GetErrorWithLineBreaksVisible(s string) string {
s = lfRegexp.ReplaceAllString(s, `\n`)
s = crRegexp.ReplaceAllString(s, `\r`)
s = crlfRegexp.ReplaceAllString(s, `\r\n`)
return s
}