| // see regex.txt for a slightly separated version of this regex |
| var vt100re = regexp.MustCompile(`^\033([\[\]]([\d\?]+)?(;[\d\?]+)*)?(.)`) |
| var vt100exc = regexp.MustCompile(`^\033(\[[^a-zA-Z0-9@\?]+|[\(\)]).`) |
| func Clean(line string, color bool) string { |
| var edit = newLineEdit(len(line)) |
| for i := 0; i < len(lineb); { |
| if bytes.HasPrefix(lineb[i:], []byte("\x1b]0;")) { |
| pos := bytes.Index(lineb[i:], []byte("\a")) |
| if m := vt100exc.Find(lineb[i:]); m != nil { |
| } else if m := vt100re.FindSubmatch(lineb[i:]); m != nil { |
| n, err := strconv.Atoi(num) |
| if err != nil || n > 10000 { |
| edit.Insert(bytes.Repeat([]byte{' '}, n)) |
| if c == '\n' || c >= ' ' { |
| out = append(out, []byte("\033[0m")...) |