Documentation
¶
Index ¶
- Constants
- func NewConfigItem(selector string) *configItem
- type CaptureFunc
- type Config
- func (r *Config) CloneConfig() *Config
- func (r *Config) Dereference(referenceConfigs ...ConfigIfc) int
- func (r *Config) DereferenceString(str string) (*string, int)
- func (r *Config) MergeConfig(config ConfigIfc) *Config
- func (r *Config) SetDelimiters(opener, closer byte) *Config
- func (r *Config) SetMaxDepth(max int) *Config
- type ConfigIfc
- type ConfigItemIfc
- type Configurable
- func (r *Configurable) Configure(config ConfigIfc) error
- func (r *Configurable) DeclareConfigItems(configItems ...ConfigItemIfc) *Configurable
- func (r *Configurable) GetConfig() ConfigIfc
- func (r *Configurable) GetMissingConfigs() []string
- func (r *Configurable) HasMissingConfigs() bool
- func (r *Configurable) Start() error
- type ConfigurableIfc
- type ValidateFunc
Constants ¶
const DEFAULT_MAX_REFERENCE_DEPTH = 10
Sane defaults
const DEFAULT_REFERENCE_DELIMITER_CLOSER = '%'
const DEFAULT_REFERENCE_DELIMITER_OPENER = '%'
Variables ¶
This section is empty.
Functions ¶
func NewConfigItem ¶
func NewConfigItem(selector string) *configItem
Types ¶
type CaptureFunc ¶
type CaptureFunc func(dataValue data.DataValueIfc) error
type Config ¶
type Config struct {
*data.DataValue
// contains filtered or unexported fields
}
func FromDataValue ¶
func FromDataValue(dataValue *data.DataValue) *Config
Create instance from DataValue (which can have its own factories from various data sources, like JSON, YAML, XML etc., string/stream/file/environment, etc)
func (*Config) CloneConfig ¶
func (*Config) Dereference ¶
Dereference values with %reference% selectors against referenceConfig(s); returns num substitutions This is a multple-pass iteration dereference; if subs comes out > 0 then an additional pass may be called for to see if more subs are possible (think of subtitutions that themselves contain additional keys needing deferencing), so we make another pass up to a configured max depth. TODO: Technically max passes is not "depth" since this is non-recursive; rename to "derefPassMax" TODO: It doesn't seem like the return value int actually provides any utility value. Maybe just return self and set immutable - should only need to call this once. Perform any mutations/merges needed before Dereferencing, and then it's baked, no more changes!
func (*Config) DereferenceString ¶
Dereference any %selector% references our keys in supplied string; returns dereferenced string and num substitutions
func (*Config) MergeConfig ¶
Merge properties of passed config into our own embedded data
func (*Config) SetDelimiters ¶
func (*Config) SetMaxDepth ¶
type ConfigItemIfc ¶
type ConfigItemIfc interface {
GetSelector() string
SetRequired() *configItem
IsRequired() bool
CanCapture() bool
CaptureWith(captureFunc CaptureFunc) *configItem
Capture(dataValue data.DataValueIfc) error
CanValidate() bool
ValidateWith(validateFunc ValidateFunc) *configItem
Validate(dataValue data.DataValueIfc) error
SetDefault(dataValue data.DataValueIfc) *configItem
}
type Configurable ¶
Exported to support embedding
func NewConfigurable ¶
func NewConfigurable(configItems ...ConfigItemIfc) *Configurable
func (*Configurable) Configure ¶
func (r *Configurable) Configure(config ConfigIfc) error
Just capture the provided configuration by default Overrides should call this parent, and return error if this fails or for any validation problems
func (*Configurable) DeclareConfigItems ¶
func (r *Configurable) DeclareConfigItems(configItems ...ConfigItemIfc) *Configurable
func (*Configurable) GetConfig ¶
func (r *Configurable) GetConfig() ConfigIfc
func (*Configurable) GetMissingConfigs ¶
func (r *Configurable) GetMissingConfigs() []string
Verify that all required Configs are captured
func (*Configurable) HasMissingConfigs ¶
func (r *Configurable) HasMissingConfigs() bool
MissingConfigs as a bool!
func (*Configurable) Start ¶
func (r *Configurable) Start() error
type ConfigurableIfc ¶
type ConfigurableIfc interface {
// Embedded interface(s)
startable.StartableIfc
// Our own interface
DeclareConfigItems(configItems ...ConfigItemIfc) *Configurable
Configure(config ConfigIfc) error
GetMissingConfigs() []string
HasMissingConfigs() bool
GetConfig() ConfigIfc
}
Any type that implements ConfigurableIfc should be ready to receive configuration data one time as so:
type ValidateFunc ¶
type ValidateFunc func(dataValue data.DataValueIfc) error