(b []byte, isCollapse bool)
| 35 | } |
| 36 | |
| 37 | func stripSpaceExt(b []byte, isCollapse bool) []byte { |
| 38 | if len(b) == 0 { |
| 39 | return b |
| 40 | } |
| 41 | |
| 42 | var dst []byte |
| 43 | if isCollapse && isSpace(b[0]) { |
| 44 | dst = append(dst, ' ') |
| 45 | } |
| 46 | isLastSpace := isSpace(b[len(b)-1]) |
| 47 | for len(b) > 0 { |
| 48 | n := bytes.IndexByte(b, '\n') |
| 49 | if n < 0 { |
| 50 | n = len(b) |
| 51 | } |
| 52 | z := b[:n] |
| 53 | if n == len(b) { |
| 54 | b = b[n:] |
| 55 | } else { |
| 56 | b = b[n+1:] |
| 57 | } |
| 58 | z = stripLeadingSpace(z) |
| 59 | z = stripTrailingSpace(z) |
| 60 | if len(z) == 0 { |
| 61 | continue |
| 62 | } |
| 63 | dst = append(dst, z...) |
| 64 | if isCollapse { |
| 65 | dst = append(dst, ' ') |
| 66 | } |
| 67 | } |
| 68 | if isCollapse && !isLastSpace && len(dst) > 0 { |
| 69 | dst = dst[:len(dst)-1] |
| 70 | } |
| 71 | return dst |
| 72 | } |
| 73 | |
| 74 | func isSpace(c byte) bool { |
| 75 | return unicode.IsSpace(rune(c)) |
no test coverage detected
searching dependent graphs…