This object is given as input to each linter.
Arguments
- filename
the file to be parsed.
- lines
a character vector of lines. If
NULL
, thenfilename
will be read.
Value
A list
with three components:
- expressions
a
list
ofn+1
objects. The firstn
elements correspond to each expression infilename
, and consist of a list of 9 elements:filename
(character
)line
(integer
) the line infilename
where this expression beginscolumn
(integer
) the column infilename
where this expression beginslines
(namedcharacter
) vector of all lines spanned by this expression, named with the line number corresponding tofilename
parsed_content
(data.frame
) as given byutils::getParseData()
for this expressionxml_parsed_content
(xml_document
) the XML parse tree of this expression as given byxmlparsedata::xml_parse_data()
content
(character
) the same aslines
as a single string (not split across lines)
The final element of
expressions
is a list corresponding to the full file consisting of 6 elements:filename
(character
)file_lines
(character
) thereadLines()
output for this filecontent
(character
) for .R files, the same asfile_lines
; for .Rmd or .qmd scripts, this is the extracted R source code (as text)full_parsed_content
(data.frame
) as given byutils::getParseData()
for the full contentfull_xml_parsed_content
(xml_document
) the XML parse tree of all expressions as given byxmlparsedata::xml_parse_data()
terminal_newline
(logical
) records whetherfilename
has a terminal newline (as determined byreadLines()
producing a corresponding warning)
- error
A
Lint
object describing any parsing error.- lines
The
readLines()
output for this file.
Details
The file is read using the encoding
setting.
This setting is found by taking the first valid result from the following locations
The
encoding
key from the usual lintr configuration settings.The
Encoding
field from a PackageDESCRIPTION
file in a parent directory.The
Encoding
field from an R Project.Rproj
file in a parent directory."UTF-8"
as a fallback.
Examples
tmp <- withr::local_tempfile(lines = c("x <- 1", "y <- x + 1"))
get_source_expressions(tmp)
#> Warning: cannot open file '/tmp/RtmpAx0Ma8/file1813421b18ef': No such file or directory
#> Error in file(con, "r"): cannot open the connection