summaryrefslogtreecommitdiffstats
path: root/regex.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-12-01 06:59:17 -0800
committerKaz Kylheku <kaz@kylheku.com>2016-12-01 06:59:17 -0800
commit40b56cf6878999799fff36b7f8d719de8d196d58 (patch)
treef3115f9863dff5410f8e36be4f93f7863e226645 /regex.c
parent4dec6b260812d1a30095aa24837730b50a661c17 (diff)
downloadtxr-40b56cf6878999799fff36b7f8d719de8d196d58.tar.gz
txr-40b56cf6878999799fff36b7f8d719de8d196d58.tar.bz2
txr-40b56cf6878999799fff36b7f8d719de8d196d58.zip
Adding functions fr^$, fr^, fr$ and frr.
* regex.c (regex_range_full_fun, regex_range_left_fun, regex_range_right_fun, regex_range_search_fun): New functions. (regex_init): Register fr^$, fr^, fr$ and frr intrinsics. * txr.1: Documented.
Diffstat (limited to 'regex.c')
-rw-r--r--regex.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/regex.c b/regex.c
index bd6ed971..1f645ead 100644
--- a/regex.c
+++ b/regex.c
@@ -2928,6 +2928,30 @@ val regex_range_all(val regex, val arg1, val arg2, val arg3)
}
}
+val regex_range_full_fun(val regex, val pos)
+{
+ return curry_123_3(func_n3(regex_range_full),
+ regex, default_arg(pos, zero));
+}
+
+val regex_range_left_fun(val regex, val pos)
+{
+ return curry_123_3(func_n3(regex_range_left),
+ regex, default_arg(pos, zero));
+}
+
+val regex_range_right_fun(val regex, val end)
+{
+ if (null_or_missing_p(end))
+ return curry_123_2(func_n3(regex_range_right), regex, end);
+ return curry_123_3(func_n3(regex_range_left), regex, end);
+}
+
+val regex_range_search_fun(val regex, val start, val from_end)
+{
+ return curry_1234_1(func_n4(range_regex), regex, start, from_end);
+}
+
val read_until_match(val regex, val stream_in, val include_match_in)
{
regex_machine_t regm;
@@ -3116,6 +3140,10 @@ void regex_init(void)
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));
reg_fun(intern(lit("rra"), user_package), func_n4o(regex_range_all, 2));
+ reg_fun(intern(lit("fr^$"), user_package), func_n2o(regex_range_full_fun, 1));
+ reg_fun(intern(lit("fr^"), user_package), func_n2o(regex_range_left_fun, 1));
+ reg_fun(intern(lit("fr$"), user_package), func_n2o(regex_range_right_fun, 1));
+ reg_fun(intern(lit("frr"), user_package), func_n3o(regex_range_search_fun, 1));
init_special_char_sets();
}