[Python-checkins] CVS: python/dist/src/Modules _sre.c,2.73,2.74

Fredrik Lundh effbot@users.sourceforge.net
Wed, 24 Oct 2001 15:16:32 -0700


Update of /cvsroot/python/python/dist/src/Modules
In directory usw-pr-cvs1:/tmp/cvs-serv10490/Modules

Modified Files:
	_sre.c 
Log Message:


(experimental) "finditer" method/function.  this works pretty much
like findall, but returns an iterator (which returns match objects)
instead of a list of strings/tuples.


Index: _sre.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/_sre.c,v
retrieving revision 2.73
retrieving revision 2.74
diff -C2 -d -r2.73 -r2.74
*** _sre.c	2001/10/22 21:18:08	2.73
--- _sre.c	2001/10/24 22:16:30	2.74
***************
*** 36,39 ****
--- 36,40 ----
   * 2001-10-21 fl  added sub/subn primitive
   * 2001-10-22 fl  check for literal sub/subn templates
+  * 2001-10-24 fl  added finditer primitive (for 2.2 only)
   *
   * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
***************
*** 1955,1958 ****
--- 1956,1983 ----
  }
  
+ #if PY_VERSION_HEX >= 0x02020000
+ static PyObject*
+ pattern_finditer(PatternObject* pattern, PyObject* args)
+ {
+     PyObject* scanner;
+     PyObject* search;
+     PyObject* iterator;
+ 
+     scanner = pattern_scanner(pattern, args);
+     if (!scanner)
+         return NULL;
+ 
+     search = PyObject_GetAttrString(scanner, "search");
+     Py_DECREF(scanner);
+     if (!search)
+         return NULL;
+ 
+     iterator = PyCallIter_New(search, Py_None);
+     Py_DECREF(search);
+ 
+     return iterator;
+ }
+ #endif
+ 
  static PyObject*
  pattern_split(PatternObject* self, PyObject* args, PyObject* kw)
***************
*** 2332,2335 ****
--- 2357,2363 ----
      {"split", (PyCFunction) pattern_split, METH_VARARGS|METH_KEYWORDS},
      {"findall", (PyCFunction) pattern_findall, METH_VARARGS|METH_KEYWORDS},
+ #if PY_VERSION_HEX >= 0x02020000
+     {"finditer", (PyCFunction) pattern_finditer, METH_VARARGS},
+ #endif
      {"scanner", (PyCFunction) pattern_scanner, METH_VARARGS},
      {"__copy__", (PyCFunction) pattern_copy, METH_VARARGS},