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: