aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2023-07-27 15:28:23 -0700
committerTakashi Kokubun <takashikkbn@gmail.com>2023-07-27 15:30:10 -0700
commit97219721752e7cc1eda51131d6a3cd753d37276c (patch)
treecd797f16d54a35098125e46f2a7564fb1bb45e44 /include
parent5669a28fde3b767953b5a7d6e63cd8e53f0185eb (diff)
downloadruby-97219721752e7cc1eda51131d6a3cd753d37276c.tar.gz
Resurrect rb_reg_prepare_re C API
Existing strscan releases rely on this C API. It means that the current Ruby master doesn't work if your Gemfile.lock has strscan unless it's locked to 3.0.7, which is not released yet. To fix it, let's not remove the C API we've exposed to users.
Diffstat (limited to 'include')
-rw-r--r--include/ruby/re.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/include/ruby/re.h b/include/ruby/re.h
index 52faeb1e98..f86d6f26cf 100644
--- a/include/ruby/re.h
+++ b/include/ruby/re.h
@@ -106,6 +106,27 @@ long rb_reg_adjust_startpos(VALUE re, VALUE str, long pos, int dir);
VALUE rb_reg_quote(VALUE str);
/**
+ * Exercises various checks and preprocesses so that the given regular
+ * expression can be applied to the given string. The preprocess here includes
+ * (but not limited to) for instance encoding conversion.
+ *
+ * @param[in] re Target regular expression.
+ * @param[in] str What `re` is about to run on.
+ * @exception rb_eArgError `re` does not fit for `str`.
+ * @exception rb_eEncCompatError `re` and `str` are incompatible.
+ * @exception rb_eRegexpError `re` is malformed.
+ * @return A preprocessesed pattern buffer ready to be applied to `str`.
+ * @note The return value is manages by our GC. Don't free.
+ *
+ * @internal
+ *
+ * The return type, `regex_t *`, is defined in `<ruby/onigmo.h>`, _and_
+ * _conflicts_ with POSIX's `<regex.h>`. We can no longer save the situation
+ * at this point. Just don't mix the two.
+ */
+regex_t *rb_reg_prepare_re(VALUE re, VALUE str);
+
+/**
* Runs a regular expression match using function `match`. Performs preparation,
* error handling, and memory cleanup.
*