mirror of
https://github.com/ralsina/tartrazine.git
synced 2024-11-10 13:32:24 +00:00
8ff885a3a8
Closes #17 Implements the IsGenerated helper function to filter out generated files using the rules and matchers in: - https://github.com/github/linguist/blob/master/lib/linguist/generated.rb Since the vast majority of matchers have very different logic, it cannot be autogenerated directly from linguist like other logics in enry, so it's translated by hand. There are three different types of matchers in this implementation: - By extension, which mark as generated based only in the extension. These are the fastest matchers, so they're done first. - By file name, which matches patterns against the filename. These are performed in second place. Unlike linguist, we try to use string functions instead of regexps as much as possible. - Finally, the rest of the matchers, which go into the content and try to identify if they're generated or not based on the content. Unlike linguist, we try to only read the content we need and not split it all unless it's necessary and use byte functions instead of regexps as much as possible. Signed-off-by: Miguel Molina <miguel@erizocosmi.co>
72 lines
2.6 KiB
R
72 lines
2.6 KiB
R
% Generated by roxygen2: do not edit by hand
|
||
% Please edit documentation in R/hello.R
|
||
\name{import}
|
||
\alias{import}
|
||
\title{Import a module into the current scope}
|
||
\usage{
|
||
import(module, attach, attach_operators = TRUE)
|
||
}
|
||
\arguments{
|
||
\item{module}{an identifier specifying the full module path}
|
||
|
||
\item{attach}{if \code{TRUE}, attach the newly loaded module to the object
|
||
search path (see \code{Details})}
|
||
|
||
\item{attach_operators}{if \code{TRUE}, attach operators of module to the
|
||
object search path, even if \code{attach} is \code{FALSE}}
|
||
}
|
||
\value{
|
||
the loaded module environment (invisible)
|
||
}
|
||
\description{
|
||
\code{module = import('module')} imports a specified module and makes its
|
||
code available via the environment-like object it returns.
|
||
}
|
||
\details{
|
||
Modules are loaded in an isolated environment which is returned, and
|
||
optionally attached to the object search path of the current scope (if
|
||
argument \code{attach} is \code{TRUE}).
|
||
\code{attach} defaults to \code{FALSE}. However, in interactive code it is
|
||
often helpful to attach packages by default. Therefore, in interactive code
|
||
invoked directly from the terminal only (i.e. not within modules),
|
||
\code{attach} defaults to the value of \code{options('import.attach')}, which
|
||
can be set to \code{TRUE} or \code{FALSE} depending on the user’s preference.
|
||
|
||
\code{attach_operators} causes \emph{operators} to be attached by default,
|
||
because operators can only be invoked in R if they re found in the search
|
||
path. Not attaching them therefore drastically limits a module’s usefulness.
|
||
|
||
Modules are searched in the module search path \code{options('import.path')}.
|
||
This is a vector of paths to consider, from the highest to the lowest
|
||
priority. The current directory is \emph{always} considered first. That is,
|
||
if a file \code{a.r} exists both in the current directory and in a module
|
||
search path, the local file \code{./a.r} will be loaded.
|
||
|
||
Module names can be fully qualified to refer to nested paths. See
|
||
\code{Examples}.
|
||
}
|
||
\note{
|
||
Unlike for packages, attaching happens \emph{locally}: if
|
||
\code{import} is executed in the global environment, the effect is the same.
|
||
Otherwise, the imported module is inserted as the parent of the current
|
||
\code{environment()}. When used (globally) \emph{inside} a module, the newly
|
||
imported module is only available inside the module’s search path, not
|
||
outside it (nor in other modules which might be loaded).
|
||
}
|
||
\examples{
|
||
# `a.r` is a file in the local directory containing a function `f`.
|
||
a = import('a')
|
||
a$f()
|
||
|
||
# b/c.r is a file in path `b`, containing a function `g`.
|
||
import('b/c', attach = TRUE)
|
||
g() # No module name qualification necessary
|
||
|
||
}
|
||
\seealso{
|
||
\code{unload}
|
||
|
||
\code{reload}
|
||
|
||
\code{module_name}
|
||
} |