aboutsummaryrefslogtreecommitdiffstats
path: root/layout/split.go
diff options
context:
space:
mode:
Diffstat (limited to 'layout/split.go')
-rw-r--r--layout/split.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/layout/split.go b/layout/split.go
index fb6d36e..db04225 100644
--- a/layout/split.go
+++ b/layout/split.go
@@ -7,18 +7,20 @@ import "fmt"
// The sum of all elements of the returned slice must be eqal to the space.
type SplitFunc func(elements int, space int) []int
+var _ SplitFunc = EvenSplit
+
// EvenSplit is a SplitFunc used to split a space (almost) evenly among the elements.
// It is almost evenly because width may not be divisible by elements.
func EvenSplit(elements int, width int) []int {
if elements <= 0 {
panic(fmt.Errorf("EvenSplit: elements must be greater than 0"))
}
- ret := make([]int, 0, elements)
+ ret := make([]int, elements)
for elements > 0 {
v := width / elements
width -= v
elements -= 1
- ret = append(ret, v)
+ ret[elements] = v
}
return ret
}