Update of /project/cl-unification/cvsroot/cl-unification/lib-dependent In directory cl-net:/tmp/cvs-serv20396
Modified Files: cl-ppcre-template.lisp Log Message: Patched to use Cl-PPCRE:SCAN-TO-STRINGS (thanks to Pixel // pinterface [a] gmail dot com).
--- /project/cl-unification/cvsroot/cl-unification/lib-dependent/cl-ppcre-template.lisp 2009/04/17 22:40:29 1.2 +++ /project/cl-unification/cvsroot/cl-unification/lib-dependent/cl-ppcre-template.lisp 2009/12/17 16:57:45 1.3 @@ -120,13 +120,10 @@ (type (or null (integer 0 #.most-positive-fixnum)) end)) (let ((end (or end (length s)))) (declare (type (integer 0 #.most-positive-fixnum) end)) - (multiple-value-bind (m-start m-end r-starts r-ends) - (cl-ppcre:scan (scanner re-t) s :start start :end end) - ;; Maybe SCAN-TO-STRINGS would be simpler to use...
- (declare (type (integer 0 #.most-positive-fixnum) m-start m-end) - (type (vector (integer 0 #.most-positive-fixnum)) r-starts r-ends)) - (unless (and (= start m-start) (= m-end end)) + (multiple-value-bind (matched-p strings) + (cl-ppcre:scan-to-strings (scanner re-t) s :start start :end end) + (unless matched-p (error 'unification-failure :format-control "String ~S cannot be matched against ~ regular expression ~S." @@ -135,9 +132,7 @@ (let ((vars (variables re-t))) (if (null vars) env - (loop for r-start across r-starts - for r-end across r-ends - for r-string of-type string = (subseq s r-start r-end) + (loop for r-string of-type string across strings for v in vars for result-env = (var-unify v r-string env) then (var-unify v r-string result-env)