github.com/panekj/cli@v0.0.0-20230304125325-467dd2f3797e/cli/command/formatter/custom.go (about)

     1  package formatter
     2  
     3  import "strings"
     4  
     5  // Common header constants
     6  const (
     7  	CreatedSinceHeader = "CREATED"
     8  	CreatedAtHeader    = "CREATED AT"
     9  	SizeHeader         = "SIZE"
    10  	LabelsHeader       = "LABELS"
    11  	NameHeader         = "NAME"
    12  	DescriptionHeader  = "DESCRIPTION"
    13  	DriverHeader       = "DRIVER"
    14  	ScopeHeader        = "SCOPE"
    15  	StateHeader        = "STATE"
    16  	StatusHeader       = "STATUS"
    17  	PortsHeader        = "PORTS"
    18  	ImageHeader        = "IMAGE"
    19  	ErrorHeader        = "ERROR"
    20  	ContainerIDHeader  = "CONTAINER ID"
    21  )
    22  
    23  // SubContext defines what Context implementation should provide
    24  type SubContext interface {
    25  	FullHeader() interface{}
    26  }
    27  
    28  // SubHeaderContext is a map destined to formatter header (table format)
    29  type SubHeaderContext map[string]string
    30  
    31  // Label returns the header label for the specified string
    32  func (c SubHeaderContext) Label(name string) string {
    33  	n := strings.Split(name, ".")
    34  	r := strings.NewReplacer("-", " ", "_", " ")
    35  	h := r.Replace(n[len(n)-1])
    36  
    37  	return h
    38  }
    39  
    40  // HeaderContext provides the subContext interface for managing headers
    41  type HeaderContext struct {
    42  	Header interface{}
    43  }
    44  
    45  // FullHeader returns the header as an interface
    46  func (c *HeaderContext) FullHeader() interface{} {
    47  	return c.Header
    48  }