% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/setGlobalOptions.R
\name{setGlobalOptions}
\alias{setGlobalOptions}
\alias{set_opt}
\title{Option Generator}
\usage{
setGlobalOptions(...)

set_opt(...)
}
\arguments{
\item{...}{Specification of options, see the **Details** section.}
}
\description{
Option Generator
}
\details{
The simplest way is to construct an option function (e.g. `opt()`) as:

```
opt = set_opt(
     "a" = 1,
     "b" = "text"
 )
```

Then users can get or set the options by 

```
opt()
opt("a")
opt$a
opt[["a"]]
opt(c("a", "b"))
opt("a", "b")
opt("a" = 2)
opt$a = 2
opt[["a"]] = 2
opt("a" = 2, "b" = "new_text")
```

Options can be reset to their default values by:

```
opt(RESET = TRUE)
# or
reset_opt(opt)
```

The value for each option can be set as a list which contains more complex configurations:

```
opt = set_opt(
     "a" = list(
         .value = 1,
         .length = 1,
         .class = "numeric",
         .validate = function(x) x > 0
     )
)
```

The different fields in the list can be used to filter or validate the option values.

- `.value`: The default value.
- `.length`: The valid length of the option value. It can be a vector, the check will be passed if one of the length fits.
- `.class`: The valid class of the option value. It can be a vector, the check will be passed if one of the classes fits.
- `.validate`: Validation function. The input parameter is the option value and should return a single logical value.
- `.failed_msg`: Once validation failed, the error message that is printed.
- `.filter`: Filtering function. The input parameter is the option value and it should return a filtered option value.
- `.read.only`: Logical. The option value can not be modified if it is set to `TRUE`.
- `.visible`: Logical. Whether the option is visible to users.
- `.private`: Logical. The option value can only be modified in the same namespace where the option function is created.
- `.synonymous`: a single option name which should have been already defined ahead of current option. The option specified will be shared by current option.
- `.description`: a short text for describing the option. The description is only used when printing the object.

For more detailed explanation, please go to the vignette.
}
\examples{
opt = set_opt(
    a = 1,
    b = "text"
)
opt
# for more examples, please go to the vignette
}
