summaryrefslogtreecommitdiffstats
path: root/regex.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-10-03 07:05:39 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-10-03 07:05:39 -0700
commit4c9640f9a5d35164bbede6a7e6240611215a04f2 (patch)
tree87a303d82e29290da1230ac5744673d2bb70aec9 /regex.c
parent4fbc51dadaeb3d25887cec5bf824b8992a960b02 (diff)
downloadtxr-4c9640f9a5d35164bbede6a7e6240611215a04f2.tar.gz
txr-4c9640f9a5d35164bbede6a7e6240611215a04f2.tar.bz2
txr-4c9640f9a5d35164bbede6a7e6240611215a04f2.zip
New rr function.
* regex.c (regex_range_search): New function. (regex_init): Register regex_range_search as rr intrinsic. * regex.h (regex_range_search): Declared. * txr.1: Documented rr, and added reference to it in description of regex-range.
Diffstat (limited to 'regex.c')
-rw-r--r--regex.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/regex.c b/regex.c
index ed2fc2d5..e95561ff 100644
--- a/regex.c
+++ b/regex.c
@@ -2812,6 +2812,17 @@ val regex_range_right(val regex, val arg1, val arg2)
}
}
+val regex_range_search(val regex, val arg1, val arg2, val arg3)
+{
+ if (missingp(arg2)) {
+ return range_regex(arg1, regex, zero, nil);
+ } else if (missingp(arg3)) {
+ return range_regex(arg2, regex, arg1, nil);
+ } else {
+ return range_regex(arg3, regex, arg1, arg2);
+ }
+}
+
val read_until_match(val regex, val stream_in, val include_match_in)
{
regex_machine_t regm;
@@ -2998,6 +3009,7 @@ void regex_init(void)
reg_fun(intern(lit("r^$"), user_package), func_n3o(regex_range_full, 2));
reg_fun(intern(lit("r^"), user_package), func_n3o(regex_range_left, 2));
reg_fun(intern(lit("r$"), user_package), func_n3o(regex_range_right, 2));
+ reg_fun(intern(lit("rr"), user_package), func_n4o(regex_range_search, 2));
init_special_char_sets();
}