summaryrefslogtreecommitdiff
path: root/vendor/github.com/renstrom/dedent/dedent.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/renstrom/dedent/dedent.go')
-rw-r--r--vendor/github.com/renstrom/dedent/dedent.go56
1 files changed, 0 insertions, 56 deletions
diff --git a/vendor/github.com/renstrom/dedent/dedent.go b/vendor/github.com/renstrom/dedent/dedent.go
deleted file mode 100644
index f58dc47d5..000000000
--- a/vendor/github.com/renstrom/dedent/dedent.go
+++ /dev/null
@@ -1,56 +0,0 @@
-package dedent
-
-import (
- "regexp"
- "strings"
-)
-
-var whitespaceOnly = regexp.MustCompile("(?m)^[ \t]+$")
-var leadingWhitespace = regexp.MustCompile("(?m)(^[ \t]*)")
-
-// Dedent removes any common leading whitespace from every line in s.
-//
-// This can be used to make multiline strings to line up with the left edge of
-// the display, while still presenting them in the source code in indented
-// form.
-func Dedent(s string) string {
- s = whitespaceOnly.ReplaceAllString(s, "")
- margin := findMargin(s)
- if len(margin) == 0 {
- return s
- }
- return regexp.MustCompile("(?m)^"+margin).ReplaceAllString(s, "")
-}
-
-// Look for the longest leading string of spaces and tabs common to all lines.
-func findMargin(s string) string {
- var margin string
-
- indents := leadingWhitespace.FindAllString(s, -1)
- numIndents := len(indents)
- for i, indent := range indents {
- // Don't use last row if it is empty
- if i == numIndents-1 && indent == "" {
- break
- }
-
- if margin == "" {
- margin = indent
- } else if strings.HasPrefix(indent, margin) {
- // Current line more deeply indented than previous winner:
- // no change (previous winner is still on top).
- continue
- } else if strings.HasPrefix(margin, indent) {
- // Current line consistent with and no deeper than previous winner:
- // it's the new winner.
- margin = indent
- } else {
- // Current line and previous winner have no common whitespace:
- // there is no margin.
- margin = ""
- break
- }
- }
-
- return margin
-}