% File src/library/utils/man/removeSource.Rd % Part of the R package, https://www.R-project.org % Copyright 2014-2018 R Core Team % Distributed under GPL 2 or later \name{removeSource} \alias{removeSource} \title{Remove Stored Source from a Function or Language Object} \description{ When \code{options("keep.source")} is \code{TRUE}, a copy of the original source code to a function is stored with it. Similarly, \code{\link{parse}()} may keep formatted source for an expression. Such source reference attributes are removed from the object by \code{removeSource()}. } \usage{ removeSource(fn) } \arguments{ \item{fn}{a \code{\link{function}} or another language object (fulfilling \code{\link{is.language}}) from which to remove the source. } } \details{ This removes the \code{"srcref"} and related attributes, via \emph{recursive} cleaning of \code{body(fn)} in the case of a function or the recursive language parts, otherwise. } \value{ A copy of the \code{fn} object with the source removed. } \seealso{ \code{\link{is.language}} about language objects. \code{\link{srcref}} for a description of source reference records, \code{\link{deparse}} for a description of how functions are deparsed. } \examples{ ## to make this act independently of the global 'options()' setting: op <- options(keep.source = TRUE) fn <- function(x) { x + 1 # A comment, kept as part of the source } fn names(attributes(fn)) # "srcref" (only) names(attributes(body(fn))) # "srcref" "srcfile" "wholeSrcref" f2 <- removeSource(fn) f2 stopifnot(length(attributes(fn)) > 0, is.null(attributes(f2)), is.null(attributes(body(f2)))) ## Source attribute of parse()d expressions, ## have {"srcref", "srcfile", "wholeSrcref"} : E <- parse(text ="a <- x^y # power") ; names(attributes(E )) E. <- removeSource(E) ; names(attributes(E.)) stopifnot(length(attributes(E )) > 0, is.null(attributes(E.))) options(op) # reset to previous state } \keyword{utility}