| match_s {parcr} | R Documentation |
Identifying and processing a string and producing custom output
Description
match_s matches a string using a function and returns a desired object
type.
Usage
match_s(s)
Arguments
s |
a string-parsing function. |
Details
This parser short-cuts the pattern satisfy(b) %using% f. With match_s
you do not have to write separate predicate and processing functions b and
f when identification and parsing can be done with a single string
parsing function s.
The function s will be given a non-empty single-element character vector
as its argument, so you don't have to test for empty input, like
character(0). These two facts also often simplify further processing with
the string functions like grep, regmatches and those from the stringr
package. The function s can return any R-object when succeeding, but to
signal failure to the parser it must return the empty list(). Note that
list() output from s will be turned into a marker object, the internal
object to mark failure, by match_s(), see failed().
Value
A parser.
Pseudocode
match_s(s)(x): if x==null then fail()(x) else if s(x[1]) then succeed(s(x[1]))(x[-1]) else fail()(x)
Examples
expect_integers <- function(x) {
m <- gregexpr("[[:digit:]]+", x)
matches <- regmatches(x,m)[[1]]
if (length(matches)==0) {
# this means failure to detect numbers where we expected them
return(list())
} else {
return(as.numeric(matches))
}
}
match_s(expect_integers) ("12 15 16 # some comment") # success
match_s(expect_integers) ("some text") # failure