28 lines
591 B
Go
28 lines
591 B
Go
|
// Copyright (c) 2013 ActiveState Software Inc. All rights reserved.
|
||
|
|
||
|
package tail
|
||
|
|
||
|
// partitionString partitions the string into chunks of given size,
|
||
|
// with the last chunk of variable size.
|
||
|
func partitionString(s string, chunkSize int) []string {
|
||
|
if chunkSize <= 0 {
|
||
|
panic("invalid chunkSize")
|
||
|
}
|
||
|
length := len(s)
|
||
|
chunks := 1 + length/chunkSize
|
||
|
start := 0
|
||
|
end := chunkSize
|
||
|
parts := make([]string, 0, chunks)
|
||
|
for {
|
||
|
if end > length {
|
||
|
end = length
|
||
|
}
|
||
|
parts = append(parts, s[start:end])
|
||
|
if end == length {
|
||
|
break
|
||
|
}
|
||
|
start, end = end, end+chunkSize
|
||
|
}
|
||
|
return parts
|
||
|
}
|