enforceRCC
for
setGenericS3()
and setMethodS3()
is now
defunct in favor of argument validators
.options(warnPartialMatchDollar = TRUE)
.setGenericS3()
produces an error if it can not turn
an existing function into a “default” function and create a new generic
function. Previously, it produced a warning.Now setGenericS3()
sets the S3class
attribute on any “default” methods it creates, if any.
Add internal function
R.methodsS3:::makeNamespace(pkg)
for producing
S3method()
statements to be put in a package’s NAMESPACE
file.
R.methodsS3::setMethodS3()
could produce ‘Error in
appendVarArgs( …R.oo.definition) : could not find function
“appendVarArgs”’ if the R.methodsS3 package is not
attached.
setMethodS3()
and setGenericS3()
failed
to detect names NA_real_
, etc. as R keywords due to an 11
year old bug.
R.methodsS3::throw()
is deprecated. Use
base::stop()
, or R.oo::throw()
, instead.isGenericS4()
returns FALSE for
non-existing functions, just as isGenericS3()
does.isGenericS3()
on a function gave error “object
‘Math’ of mode ‘function’ was not found” when the
methods package was not loaded,
e.g. Rscript -e "R.methodsS3::isGenericS3(function(...) NULL)"
.
findDispatchMethodsS3()
could in rare cases return
an extra set of false functions in R (< 3.1.2). This was due to a bug
in R (< 3.1.2) where the output of getAnywhere()
contained garbage results,
e.g. getAnywhere(".Options")$objs
. For backward
compatibility, findDispatchMethodsS3()
now detects this
case and works around it. This bug was only detected after adding an
explicit package test for findDispatchMethodsS3()
.
ellipsesOnly
from
setGenericS3()
. It was not used. Thanks Antonio Piccolboni
for reporting on this.setGenericS3("foo<-")
would not have a last argument name value
, which
R CMD check
complains about.setMethodS3(name, class, ...)
and
setGenericS3(name, ...)
assert that arguments
name
and class
are non-empty.BETA: Added an in-official option to make
setGenericS3()
and setMethodsS3()
look for
existing (generic) functions also in imported namespaces. This will
eventually become the default.
ROBUSTNESS: Now isGenericS3()
also compares to known
generic functions in the base package. It also does a
better job on checking whether the function calls
UseMethod()
or not.
Added argument ‘inherits’ to getGenericS3().
The above improvement of isGenericS3()
means that
setGenericS3()
does a better job to decided whether a
generic function should be created or not, which in turn means
createGeneric = FALSE
is needed much less in
setMethodS3()
.
capture.output()
from
utils which could give an error on ‘function
“capture.output” not available when setMethodS3() was used to define a
“replacement” function’. This was only observed on the R v3.0.1 release
version but not with the more recent patched or devel versions. In
addition, two other utils functions are now explicitly
imported.pkgStartupMessage()
which acknowledges
library(..., quietly = TRUE)
.:::
for “self”
(i.e. R.methodsS3) methods.\usage{}
lines are at most 90
characters long.Authors@R
field to the DESCRIPTION.setMethodS3(..., appendVarArgs = TRUE)
ignores
appendVarArgs
if the method name is "=="
,
"+"
, "-"
, "*"
, "/"
,
"^"
, "%%"
, or "%/%"
, (in addition
to "$"
, "$<-"
, "[["
,
"[[<-"
, "["
, "[<-"
). It
will also ignore it if the name matches regular expressions
"<-$"
or "^%[^%]*%$"
. The built in RCC
validators were updated accordingly.overwrite
to
setGenericS3()
.Now setMethodS3()
sets attribute
S3class
to the class.
Added argument export
to setMethodS3()
and setGenericS3()
, which sets attribute
export
to the same value.
Now only generic funcions are exported, and not all of them.
Now all S3 methods are properly declared in NAMESPACE.
...
of setMethodS3()
are
passed to setGenericS3()
.DOCUMENTATION:
example(getMethodS3)
, which was for
setMethodS3()
.isGenericS3()
, isGenericS4()
,
getGenericS3()
, and getMethodS3()
failed to
locate functions created in the global environment while there exist a
function with the same name in the base package. The
problem only affected the above functions and nothing else and it did
not exist prior to R.methodsS3 v1.2.0 when the package
did not yet have a namespace. Thanks John Oleynick for reporting on this
problem.
isGenericS3()
and isGenericS4()
did not
support specifying the function by name as a character string, despite
it was documented to do so. Thanks John Oleynick for reporting on
this.
getDispatchMethodS3()
and
findDispatchMethodsS3()
.getMethodS3()
and
getGenericS3()
.isGenericS3()
and isGenericS4()
gave an
error if a function was passed.DOCUMENTATION:
citation("R.methodsS3")
.a-Z
is illegal on (at least)
some locale, e.g. ‘C’ (where A-z
works). The only way to
specify the ASCII alphabet is to list all characters explicitly, which
we now do in all methods of the package. See the r-devel thread “invalid
regular expression ‘[a-Z]’” on 2008-03-05 for details.SIGNIFICANTLY CHANGES:
setMethodS3()
and related methods
from the R.oo package. The purpose is to provide
setMethodS3()
without having to load (the already
lightweight) R.oo package. For previous history related
to the methods in this package, please see the history of the
R.oo package.