Documentation
¶
Overview ¶
Package help contains utilities for actually writing out marker help.
Namely, it contains a series of structs (and helpers for producing them) that represent a merged view of marker definition and help that can be used for consumption by the pretty subpackage (for terminal help) or serialized as JSON (e.g. for generating HTML help).
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // SortByCategory sorts the markers by name and groups them by their help category. SortByCategory = sortByCategory{} // SortByOption sorts by the generator that the option belongs to. SortByOption = optionsSort{} )
Functions ¶
This section is empty.
Types ¶
type Argument ¶
type Argument struct {
// Type is the data type of the argument (string, bool, int, slice, any, raw, invalid)
Type string `json:"type"`
// Optional marks this argument as optional.
Optional bool `json:"optional"`
// ItemType contains the type of the slice item, if this is a slice
ItemType *Argument `json:"itemType,omitempty"`
}
Argument is the type data for a marker argument.
func ForArgument ¶
ForArgument returns the equivalent documentation for a marker argument.
func (Argument) TypeString ¶
TypeString returns a string roughly equivalent (but not identical) to the underlying Go type that this argument would parse to. It's mainly useful for user-friendly formatting of this argument (e.g. help strings).
type CategoryDoc ¶
CategoryDoc contains help information for all markers in a Category.
func ByCategory ¶
func ByCategory(reg *markers.Registry, sorter SortGroup) []CategoryDoc
ByCategory returns the marker help for markers in the given registry, grouped and sorted according to the given method.
type DetailedHelp ¶
type DetailedHelp struct {
// Summary contains a one-line description.
Summary string `json:"summary"`
// Details contains further information.
Details string `json:"details,omitempty"`
}
DetailedHelp contains both a summary and further details.
type FieldHelp ¶
type FieldHelp struct {
// Name is the field name.
Name string `json:"name"`
// Argument is the type of the field.
Argument `json:",inline"`
// DetailedHelp contains the textual help for the field.
DetailedHelp `json:",inline"`
}
FieldHelp contains information required to print documentation for a marker field.
type MarkerDoc ¶
type MarkerDoc struct {
// Name is the name of the marker.
Name string `json:"name"`
// Target is the target (field, package, type) of the marker.
Target string `json:"target"`
// DetailedHelp is the textual help for the marker.
DetailedHelp `json:",inline"`
// Category is the general "category" that this marker belongs to.
Category string `json:"category"`
// DeprecatedInFavorOf marks that this marker shouldn't be used when
// non-nil. If also non-empty, another marker should be used instead.
DeprecatedInFavorOf *string `json:"deprecatedInFavorOf,omitempty"`
// Fields is the type and help data for each field of this marker.
Fields []FieldHelp `json:"fields,omitempty"`
}
MarkerDoc contains information required to print documentation for a marker.
func ForDefinition ¶
func ForDefinition(defn *markers.Definition, maybeHelp *markers.DefinitionHelp) MarkerDoc
ForDefinition returns the equivalent marker documentation for a given marker definition and spearate help.
func (MarkerDoc) AnonymousField ¶
AnonymousField chekcs if this is an single-valued marker (as opposed to having named fields).
type SortGroup ¶
type SortGroup interface {
// Less is equivalent to the Less function from sort, and is used to sort the markers.
Less(*markers.Definition, *markers.Definition) bool
// Group returns the "group" that a given marker belongs to.
Group(*markers.Definition, *markers.DefinitionHelp) string
}
SortGroup knows how to sort and group marker definitions.