IFF is short for if(FALSE)\{#@tag ...
blocks.
These block can contain development, testing, or example code
that can be extracted into documentation or other files.
pd_is_iff(id, pd, allow.short = TRUE, .check = TRUE)pd_is_iff_block(id, pd, allow.short = TRUE, .check = TRUE)
pd_all_iff_ids(pd = get("pd", parent.frame()), ...)
pd_all_iff_block_ids(pd, root.only = TRUE, ignore.groups = FALSE, ...)
pd_is_tagged_iff_block(id, pd, tag, doc.only = TRUE, ..., .check = TRUE)
id of the expression of interest
The parse-data
information
if if(F)
should be considered an IFF block.
Perform checks for input validation?
passed along.
only root blocks(TRUE
) or all block (FALSE
)
Ignore code grouping
The tag to consider.
Should comments be restricted to documentation style comments only?
pd_is_iff
: This function tests if an expression id is the root of an
if(FALSE)
statement, differs from pd_is_iff_block
in that it will return TRUE even if the conditional statement
is not a formal bracketed block {...}
.
pd_is_iff_block
: Tests if an expression id is the root of an
if(FALSE)
block statement, differs from pd_is_iff
in that in addition to it being an if(FALSE)
expression
the conditional branch of the logic must be a braced block
of code. E.g. if given the id corresponding to
if(FALSE){...}
, both pd_is_iff()
and pd_is_iff_block()
would return TRUE while for if(FALSE)do_somthing()
pd_is_iff()
would return TRUE but pd_is_iff_block()
would
return FALSE because the expression is not a 'block' statement.
pd_all_iff_ids
: Get all ids corresponding to IFF expressions.
pd_all_iff_block_ids
: Get all ids corresponding to IFF block
pd_is_tagged_iff_block
: Test if a block if both an IFF block statement and is tagged.
To tag an IFF block the first pared element must be a comment that contains
an '@' tag to denote a special block. The comment on the same line as the
opening brace or on any subsequent line but cannot be preceded by any other
statement.
Here are some examples:
if(FALSE)\{#' @test ...
Is valid and tags the block as a test.
if(FALSE)\{#@test ...
Is valid and tags the block as a test.
Note here that we are using the #@
tag
comment.
if(FALSE)\{# @test ...
Is valid only if doc.only==FALSE
.
if(FALSE)#@test ...