| Type: | Package | 
| Title: | Lightweight and Self-Contained Modules for Code Organization | 
| Version: | 0.1.3 | 
| Description: | Creates modules inline or from a file. Modules can contain any R object and be nested. Each module have their own scope and package "search path" that does not interfere with one another or the user's working environment. | 
| License: | GPL-3 | 
| Encoding: | UTF-8 | 
| LazyData: | true | 
| RoxygenNote: | 6.1.1 | 
| URL: | https://github.com/iqis/mod | 
| BugReports: | https://github.com/iqis/mod/issues | 
| Suggests: | testthat (≥ 2.1.0), covr | 
| NeedsCompilation: | no | 
| Packaged: | 2019-08-22 02:33:34 UTC; Siqi | 
| Author: | Siqi Zhang [aut, cre] | 
| Maintainer: | Siqi Zhang <iqis.gnahz@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2019-08-23 10:40:02 UTC | 
Invoke the Active Binding in a Thing
Description
Invoke the Active Binding in a Thing
Usage
## S3 method for class 'thing'
x[...]
Arguments
| x | a thing | 
| ... | dot-dot-dot, ignored | 
Value
the return value of the active binding in a thing
Use a Package as if a Module
Description
Use a Package as if a Module
Usage
as_module(package)
Arguments
| package | name of a package; character | 
Value
a module that contains a package's exported objects
Examples
tcltk <- as_module("tcltk")
ls(tcltk)
tcltk$is.tclObj(NULL)
Drop a Module
Description
Detach a named module from the search path. If no arguments is supplied, detach the most recently attached module.
Usage
drop(name)
Arguments
| name | name of the module to exit from; character | 
Value
TRUE if successful; invisible
Examples
use(mod::ule({
   a <- 1
}), as = "my_module")
use(mod::ule({
   b <- 2
}), as = "my_other_module")
search()
# by name
drop("my_module")
# and at the head position
drop()
search()
Test if an Object is a Module
Description
Test if an Object is a Module
Usage
is_module(x)
Arguments
| x | An object | 
Value
TRUE if the object is a module, FALSE otherwise
Test if an Object is a Thing
Description
Test if an Object is a Thing
Usage
is_thing(x)
Arguments
| x | an object | 
Value
TRUE if the object is a thing, FALSE otherwise
Make a Module
Description
Institute a module object inline or from a file. mod::ule() is a useful shorthand for module() when this package is not attached.
Usage
module(..., parent = parent.frame(), lock = TRUE,
  expose_private = FALSE)
ule(..., parent = parent.frame(), lock = TRUE,
  expose_private = FALSE)
acquire(module, parent = baseenv(), lock = TRUE,
  expose_private = FALSE)
Arguments
| ... | module expression | 
| parent | the enclosing environment | 
| lock | lock the environment; logical | 
| expose_private | expose the private environment as '..private..'; logical | 
| module | module object, or path to a module file | 
Value
an environment of class module containing defined objects
Examples
# from file
module_path <- system.file("misc", "example_module.R", package = "mod")
example_module <- acquire(module_path)
example_module$e(123)
# inline
my_module <- mod::ule({
    a <- 1
    .a <- 2
    f <- function(){.a}
})
my_module$a
my_module$f
Name a Module
Description
Name a Module
Usage
name(name)
Arguments
| name | the name of the module; character | 
Value
the input
Print a Module
Description
Print a Module
Usage
## S3 method for class 'module'
print(x, ...)
Arguments
| x | an object | 
| ... | dot-dot-dot, ignored | 
Value
the object itself; invisible
Provide Objects from a Module
Description
Can only be used inside a module expression. If this function is used, only the names included as argument are public. If not used, every name in the module will be public.
Usage
provide(...)
Arguments
| ... | name of any object to be accessible by user; name or character | 
Value
NULL; invisible
Examples
mod_a <- mod::ule({
    # names included in provide() are public, however...
    mod:::provide(var,.var, ..var)
    # It is suggested to omit mod::: when using
    var <- 1
    .var <- 2
    ..var <- 3 # objects denoted by .. prefix are always private.
    another_var <- 4 # objects not included in provide() are also private.
})
mod_b <- mod::ule({
    # if no call to provide(), all objects are public, except...
    var <- 1
    .var <- 2
    ..var <- 3 # objects denoted by .. prefix are always private.
})
ls(mod_a)
ls(mod_b)
Copy Bindings from a Module to Another
Description
Can only be used inside a module expression. Makes reference to objects from one module, with specified filters.
Usage
refer(..., include = c(), exclude = c(), prefix = "", sep = ".")
Arguments
| ... | names of modules; dot-dot-dot | 
| include | names to include; character | 
| exclude | names to excludde; character | 
| prefix | prefix to names; character | 
| sep | separator between prefix and names; character | 
Value
NULL; invisible
Examples
mod_a <- mod::ule(number <- 1)
mod_b <- mod::ule(number <- 2)
mod_c <- mod::ule({
    mod:::refer(mod_a, mod_b, prefix = .)
    # It is suggested to omit mod::: when using
    number <- mod_a.number + mod_b.number
})
mod_c$number
Load/Attach Package to Local Search Path
Description
Can only be used in a module expression. Emulates the effect of base::require() in its containing module, making functions and their chain of environment availab.e Masks base::require() inside a module context.
Usage
require(package)
Arguments
| package | name of the package; name or character | 
Value
NULL; invisible
Examples
mod_tcl <- mod::ule({
    mod:::require(tcltk)
    # It is suggested to omit mod::: when using
    f <- tcl
})
identical(mod_tcl$f, tcltk::tcl)
Make a Thing
Description
A "thing" is a special object made based on a module. Contains an active binding, defined with the 'dot' argument.
Usage
thing(..., dot, parent = parent.frame(), lock = TRUE,
  expose_private = FALSE)
Arguments
| ... | module expression | 
| dot | function expression used for active binding to '.' | 
| parent | the enclosing environment | 
| lock | lock the environment; logical | 
| expose_private | expose the private environment as '..private..'; logical | 
Value
a module containing an active binding
Examples
my_thing <- mod::thing({
    a <- 1
}, dot = function() a)
my_thing$.
my_thing[]
Load/Attach a Module to the Search Path
Description
Load/Attach a Module to the Search Path
Usage
use(module, as, parent = baseenv(), lock = TRUE,
  expose_private = FALSE)
Arguments
| module | module object, or path to a module file | 
| as | name when attached to search; character | 
| parent | the enclosing environment | 
| lock | lock the environment; logical | 
| expose_private | expose the private environment as '..private..'; logical | 
Value
TRUE if successful; invisible
Examples
module_path <- system.file("misc", "example_module.R", package = "mod")
example_module <- acquire(module_path)
# Attach module object to search path
use(example_module)
# or directly from file
use(module_path, "example_module")