Function: rx--translate-compat-form
rx--translate-compat-form is a byte-compiled function defined in
rx.el.gz.
Signature
(rx--translate-compat-form DEF FORM)
Documentation
Translate a compatibility form from rx-constituents.
DEF is the definition tuple. Return (REGEXP . PRECEDENCE).
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/rx.el.gz
(defun rx--translate-compat-form (def form)
"Translate a compatibility form from `rx-constituents'.
DEF is the definition tuple. Return (REGEXP . PRECEDENCE)."
(let* ((fn (nth 0 def))
(min-args (nth 1 def))
(max-args (nth 2 def))
(predicate (nth 3 def))
(nargs (1- (length form))))
(when (< nargs min-args)
(error "The `%s' form takes at least %d argument(s)"
(car form) min-args))
(when (and max-args (> nargs max-args))
(error "The `%s' form takes at most %d argument(s)"
(car form) max-args))
(when (and predicate (not (rx--every predicate (cdr form))))
(error "The `%s' form requires arguments satisfying `%s'"
(car form) predicate))
(let ((regexp (funcall fn form)))
(unless (stringp regexp)
(error "The `%s' form did not expand to a string" (car form)))
(cons (list regexp) nil))))