package formatter

import (
	"strings"
)

const (
	imageHeader        = "IMAGE"
	createdSinceHeader = "CREATED"
	createdAtHeader    = "CREATED AT"
	sizeHeader         = "SIZE"
	labelsHeader       = "LABELS"
	nameHeader         = "NAME"
	driverHeader       = "DRIVER"
	scopeHeader        = "SCOPE"
)

type subContext interface {
	FullHeader() string
	AddHeader(header string)
}

// HeaderContext provides the subContext interface for managing headers
type HeaderContext struct {
	header []string
}

// FullHeader returns the header as a string
func (c *HeaderContext) FullHeader() string {
	if c.header == nil {
		return ""
	}
	return strings.Join(c.header, "\t")
}

// AddHeader adds another column to the header
func (c *HeaderContext) AddHeader(header string) {
	if c.header == nil {
		c.header = []string{}
	}
	c.header = append(c.header, strings.ToUpper(header))
}

func stripNamePrefix(ss []string) []string {
	sss := make([]string, len(ss))
	for i, s := range ss {
		sss[i] = s[1:]
	}

	return sss
}