Browse Source

Remove ansiescape package

api/client/trust.go was the last file that used it.

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Aaron Lehmann 9 years ago
parent
commit
3f829aa6e4
2 changed files with 0 additions and 142 deletions
  1. 0 89
      pkg/ansiescape/split.go
  2. 0 53
      pkg/ansiescape/split_test.go

+ 0 - 89
pkg/ansiescape/split.go

@@ -1,89 +0,0 @@
-package ansiescape
-
-import "bytes"
-
-// dropCR drops a leading or terminal \r from the data.
-func dropCR(data []byte) []byte {
-	if len(data) > 0 && data[len(data)-1] == '\r' {
-		data = data[0 : len(data)-1]
-	}
-	if len(data) > 0 && data[0] == '\r' {
-		data = data[1:]
-	}
-	return data
-}
-
-// escapeSequenceLength calculates the length of an ANSI escape sequence
-// If there is not enough characters to match a sequence, -1 is returned,
-// if there is no valid sequence 0 is returned, otherwise the number
-// of bytes in the sequence is returned. Only returns length for
-// line moving sequences.
-func escapeSequenceLength(data []byte) int {
-	next := 0
-	if len(data) <= next {
-		return -1
-	}
-	if data[next] != '[' {
-		return 0
-	}
-	for {
-		next = next + 1
-		if len(data) <= next {
-			return -1
-		}
-		if (data[next] > '9' || data[next] < '0') && data[next] != ';' {
-			break
-		}
-	}
-	if len(data) <= next {
-		return -1
-	}
-	// Only match line moving codes
-	switch data[next] {
-	case 'A', 'B', 'E', 'F', 'H', 'h':
-		return next + 1
-	}
-
-	return 0
-}
-
-// ScanANSILines is a scanner function which splits the
-// input based on ANSI escape codes and new lines.
-func ScanANSILines(data []byte, atEOF bool) (advance int, token []byte, err error) {
-	if atEOF && len(data) == 0 {
-		return 0, nil, nil
-	}
-
-	// Look for line moving escape sequence
-	if i := bytes.IndexByte(data, '\x1b'); i >= 0 {
-		last := 0
-		for i >= 0 {
-			last = last + i
-
-			// get length of ANSI escape sequence
-			sl := escapeSequenceLength(data[last+1:])
-			if sl == -1 {
-				return 0, nil, nil
-			}
-			if sl == 0 {
-				// If no relevant sequence was found, skip
-				last = last + 1
-				i = bytes.IndexByte(data[last:], '\x1b')
-				continue
-			}
-
-			return last + 1 + sl, dropCR(data[0:(last)]), nil
-		}
-	}
-	if i := bytes.IndexByte(data, '\n'); i >= 0 {
-		// No escape sequence, check for new line
-		return i + 1, dropCR(data[0:i]), nil
-	}
-
-	// If we're at EOF, we have a final, non-terminated line. Return it.
-	if atEOF {
-		return len(data), dropCR(data), nil
-	}
-	// Request more data.
-	return 0, nil, nil
-}

+ 0 - 53
pkg/ansiescape/split_test.go

@@ -1,53 +0,0 @@
-package ansiescape
-
-import (
-	"bufio"
-	"strings"
-	"testing"
-)
-
-func TestSplit(t *testing.T) {
-	lines := []string{
-		"test line 1",
-		"another test line",
-		"some test line",
-		"line with non-cursor moving sequence \x1b[1T", // Scroll Down
-		"line with \x1b[31;1mcolor\x1b[0m then reset",  // "color" in Bold Red
-		"cursor forward \x1b[1C and backward \x1b[1D",
-		"invalid sequence \x1babcd",
-		"",
-		"after empty",
-	}
-	splitSequences := []string{
-		"\x1b[1A",   // Cursor up
-		"\x1b[1B",   // Cursor down
-		"\x1b[1E",   // Cursor next line
-		"\x1b[1F",   // Cursor previous line
-		"\x1b[1;1H", // Move cursor to position
-		"\x1b[1;1h", // Move cursor to position
-		"\n",
-		"\r\n",
-		"\n\r",
-		"\x1b[1A\r",
-		"\r\x1b[1A",
-	}
-
-	for _, sequence := range splitSequences {
-		scanner := bufio.NewScanner(strings.NewReader(strings.Join(lines, sequence)))
-		scanner.Split(ScanANSILines)
-		i := 0
-		for scanner.Scan() {
-			if i >= len(lines) {
-				t.Fatalf("Too many scanned lines")
-			}
-			scanned := scanner.Text()
-			if scanned != lines[i] {
-				t.Fatalf("Wrong line scanned with sequence %q\n\tExpected: %q\n\tActual:   %q", sequence, lines[i], scanned)
-			}
-			i++
-		}
-		if i < len(lines) {
-			t.Errorf("Wrong number of lines for sequence %q: %d, expected %d", sequence, i, len(lines))
-		}
-	}
-}