function-nodes: Function Nodes

Description Usage Arguments Details Functions Examples

Description

These function help identify and navigate noses associated with function definition.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
pd_is_function(id, pd, .check = TRUE)

pd_is_in_function(id, pd, .check = TRUE)

pd_get_function_body_id(id, pd, .check = TRUE)

pd_get_function_arg_ids(id, pd, .check = TRUE)

pd_get_function_arg_variable_ids(id, pd, .check = TRUE)

pd_get_function_arg_variable_text(id, pd, .check = TRUE)

pd_is_function_arg(id, pd, .check = TRUE)

pd_get_function_arg_associated_comment_ids(id, pd, .check = TRUE)

Arguments

id

id of the expression of interest

pd

The parse-data information

.check

Perform checks for input validation?

Details

A function node is the node for the expression that has as it's children the function keyword(firstborn), the arguments, including the nodes representing the opening closing parentheses in the definition, and finally a node, as the youngest, for the body of the function.

Functions

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# load example file and get_parse data
ex.file <- system.file("examples", "example.R", package="parsetools")
exprs <- parse(ex.file, keep.source = TRUE)
pd <- get_parse_data(exprs)

# There are 3 expressions so there should be three roots.
sum(pd_is_root(pd$id, pd))
roots <- pd_all_root_ids(pd)

function.id <- pd_get_assign_value_id(roots[[1]], pd)
pd_is_function(function.id, pd)
length(function.kids <- pd_get_children_ids(function.id, pd))
# function nodes have many because it contains
# 1. the function keyword.
# 2. the parentheses '(' and ')'
# 3. each argument name plus the equals sign and value, if given.
# 4. and finally, and expr node for the function body.
pd_token(function.kids, pd)
# even though there are only two argument since each has
# a default value given there are 6 total nodes that
# return true as function arguments, care is needed when
# dealing with function arguments.
pd_is_function_arg(function.kids, pd)
pd_get_function_arg_ids(function.id, pd)
# A simple way to identify the argument names is
pd_get_function_arg_variable_text(function.id, pd)

# To identify the function body node.
pd_get_function_body_id(function.id, pd)

RDocTaskForce/parsetools documentation built on April 10, 2020, 11:58 p.m.