Function: rng-ipattern-compute-text-typed-p

rng-ipattern-compute-text-typed-p is a byte-compiled function defined in rng-match.el.gz.

Signature

(rng-ipattern-compute-text-typed-p IPATTERN)

Source Code

;; Defined in /usr/src/emacs/lisp/nxml/rng-match.el.gz
(defun rng-ipattern-compute-text-typed-p (ipattern)
  (let ((type (rng--ipattern-type ipattern)))
    (cond ((eq type 'choice)
	   (let ((cur (rng--ipattern-child ipattern))
		 (ret nil))
	     (while (and cur (not ret))
	       (if (rng-ipattern-text-typed-p (car cur))
		   (setq ret t)
		 (setq cur (cdr cur))))
	     ret))
	  ((eq type 'group)
	   (let ((cur (rng--ipattern-child ipattern))
		 (ret nil)
		 member)
	     (while (and cur (not ret))
	       (setq member (car cur))
	       (if (rng-ipattern-text-typed-p member)
		   (setq ret t))
	       (setq cur
		     (and (rng--ipattern-nullable member)
			  (cdr cur))))
	     ret))
	  ((eq type 'after)
	   (rng-ipattern-text-typed-p (rng--ipattern-child ipattern)))
	  (t (and (memq type '(value list data data-except)) t)))))