package jsonconfig
import "go4.org/jsonconfig"
Package jsonconfig defines a helper type for JSON objects to be used for configuration.
Index ¶
- func RegisterFunc(name string, fn func(c *ConfigParser, v []interface{}) (interface{}, error))
- type ConfigParser
- func (c *ConfigParser) CheckTypes(m map[string]interface{}) error
- func (c *ConfigParser) ConfigFilePath(configFile string) (path string, err error)
- func (c *ConfigParser) ReadFile(path string) (Obj, error)
- type File
- type Obj
- func ReadFile(configPath string) (Obj, error)
- func (jc Obj) OptionalBool(key string, def bool) bool
- func (jc Obj) OptionalInt(key string, def int) int
- func (jc Obj) OptionalInt64(key string, def int64) int64
- func (jc Obj) OptionalList(key string) []string
- func (jc Obj) OptionalObject(key string) Obj
- func (jc Obj) OptionalString(key, def string) string
- func (jc Obj) OptionalStringOrObject(key string) interface{}
- func (jc Obj) RequiredBool(key string) bool
- func (jc Obj) RequiredInt(key string) int
- func (jc Obj) RequiredInt64(key string) int64
- func (jc Obj) RequiredList(key string) []string
- func (jc Obj) RequiredObject(key string) Obj
- func (jc Obj) RequiredString(key string) string
- func (jc Obj) RequiredStringOrObject(key string) interface{}
- func (jc Obj) UnknownKeys() []string
- func (jc Obj) Validate() error
Functions ¶
func RegisterFunc ¶
func RegisterFunc(name string, fn func(c *ConfigParser, v []interface{}) (interface{}, error))
RegisterFunc registers a new function that may be called from JSON configs using an array of the form ["_name", arg0, argN...]. The provided name must begin with an underscore.
Types ¶
type ConfigParser ¶
type ConfigParser struct { // Open optionally specifies an opener function. Open func(filename string) (File, error) // IncludeDirs optionally specifies where to find the other config files which are child // objects of this config, if any. Even if nil, the working directory is always searched // first. IncludeDirs []string // contains filtered or unexported fields }
ConfigParser specifies the environment for parsing a config file and evaluating expressions.
func (*ConfigParser) CheckTypes ¶
func (c *ConfigParser) CheckTypes(m map[string]interface{}) error
CheckTypes parses m and returns an error if it encounters a type or value that is not supported by this package.
func (*ConfigParser) ConfigFilePath ¶
func (c *ConfigParser) ConfigFilePath(configFile string) (path string, err error)
ConfigFilePath checks if configFile is found and returns a usable path to it. It first checks if configFile is an absolute path, or if it's found in the current working directory. If not, it then checks if configFile is in one of c.IncludeDirs. It returns an error if configFile is absolute and could not be statted, or os.ErrNotExist if configFile was not found.
func (*ConfigParser) ReadFile ¶
func (c *ConfigParser) ReadFile(path string) (Obj, error)
ReadFile parses the provided path and returns the config file. If path is empty, the c.Open function must be defined.
type File ¶
type File interface { io.ReadSeeker io.Closer Name() string }
A File is the type returned by ConfigParser.Open.
type Obj ¶
type Obj map[string]interface{}
Obj is a JSON configuration map.
func ReadFile ¶
ReadFile reads JSON config data from the specified open file, expanding all expressions. Use *ConfigParser.ReadFile instead if you need to set c.IncludeDirs.
func (Obj) OptionalBool ¶
func (Obj) OptionalInt ¶
func (Obj) OptionalInt64 ¶
func (Obj) OptionalList ¶
func (Obj) OptionalObject ¶
func (Obj) OptionalString ¶
func (Obj) OptionalStringOrObject ¶
func (Obj) RequiredBool ¶
func (Obj) RequiredInt ¶
func (Obj) RequiredInt64 ¶
func (Obj) RequiredList ¶
func (Obj) RequiredObject ¶
func (Obj) RequiredString ¶
func (Obj) RequiredStringOrObject ¶
func (Obj) UnknownKeys ¶
UnknownKeys returns the keys from the config that have not yet been discovered by one of the RequiredT or OptionalT calls.
func (Obj) Validate ¶
Source Files ¶
eval.go jsonconfig.go
- Version
- v0.0.0-20230225012048-214862532bf5 (latest)
- Published
- Feb 25, 2023
- Platform
- linux/amd64
- Imports
- 14 packages
- Last checked
- 1 month ago –
Tools for package owners.