59 lines
1.8 KiB
R
59 lines
1.8 KiB
R
## Do not use _ in names, nor :: as they cannot be parsed in old R versions
|
|
|
|
## load .base.R and all other files into ESSR environment; then attach ESSR
|
|
load.ESSR <- function(dir){
|
|
.source <-
|
|
if(any("keep.source" == names(formals(sys.source))))
|
|
sys.source
|
|
else
|
|
function(..., keep.source) sys.source(...)
|
|
|
|
Rver <-
|
|
if(exists("getRversion", mode="function")) getRversion()
|
|
else paste(R.version$major, R.version$minor, sep=".")
|
|
|
|
oldR <- Rver <= "1.3.0"
|
|
|
|
ESSR <-
|
|
if(oldR) ## really old library() revert order a bit
|
|
attach(NULL, name = "ESSR")
|
|
else if(length(nn <- names(formals(new.env))) && any(nn == "parent"))
|
|
new.env(parent =
|
|
if(Rver >= "1.9.0") getNamespace("utils")
|
|
else .BaseNamespaceEnv)
|
|
else
|
|
new.env()
|
|
|
|
assign(".ess.Rversion", Rver, envir = ESSR)
|
|
|
|
ESSRver <- scan(paste(dirname(dir), "/VERSION", sep = ""),
|
|
what = "character", quiet = TRUE)
|
|
assign(".ess.ESSRversion", ESSRver, envir = ESSR)
|
|
|
|
|
|
## .basic.R:
|
|
try(.source(paste(dir,'/.basic.R', sep = ""), envir = ESSR, keep.source = FALSE))
|
|
|
|
## all others try(*) as it will fail in old R
|
|
if(!oldR) # no sense if(oldR)
|
|
for( f in dir(dir, pattern='\\.R$', full.names=TRUE) )
|
|
try(.source(f, envir = ESSR, keep.source = FALSE))
|
|
|
|
if(Rver >= "2.4.0")
|
|
attach(ESSR)
|
|
else if(!oldR) { ## borrow from older library()
|
|
e <- attach(NULL, name = "ESSR")
|
|
.Internal(lib.fixup(ESSR, e))
|
|
} else { ## if(oldR), use as in that old library():
|
|
.Internal(lib.fixup(ESSR, .GlobalEnv))
|
|
}
|
|
|
|
## BUILDESSR needs this:
|
|
invisible(ESSR)
|
|
}
|
|
|
|
|
|
## Local Variables:
|
|
## eval: (ess-set-style 'RRR t)
|
|
## End:
|