]> granicus.if.org Git - python/commitdiff
Cleanup in anticipation of moving formatteriterator and fieldnameiterator into string...
authorEric Smith <eric@trueblade.com>
Mon, 27 Aug 2007 23:30:47 +0000 (23:30 +0000)
committerEric Smith <eric@trueblade.com>
Mon, 27 Aug 2007 23:30:47 +0000 (23:30 +0000)
Objects/stringlib/string_format.h
Objects/unicodeobject.c

index c2916fdd5667e744b0737f13db7441e8c5c60014..df6ca965fc656527836add1ce06d59e36dc31ab4 100644 (file)
@@ -54,24 +54,6 @@ SubString_new_object(SubString *str)
     return STRINGLIB_NEW(str->ptr, str->end - str->ptr);
 }
 
-/************************************************************************/
-/***********      Error handling and exception generation  **************/
-/************************************************************************/
-
-/*
-    Most of our errors are value errors, because to Python, the
-    format string is a "value".  Also, it's convenient to return
-    a NULL when we are erroring out.
-
-    XXX: need better error handling, per PEP 3101.
-*/
-static void *
-SetError(const char *s)
-{
-    /* PyErr_Format always returns NULL */
-    return PyErr_Format(PyExc_ValueError, "%s in format string", s);
-}
-
 /************************************************************************/
 /***********    Output string management functions       ****************/
 /************************************************************************/
@@ -187,7 +169,7 @@ static PyObject *
 getattr(PyObject *obj, SubString *name)
 {
     PyObject *newobj;
-    PyObject *str = STRINGLIB_NEW(name->ptr, name->end - name->ptr);
+    PyObject *str = SubString_new_object(name);
     if (str == NULL)
         return NULL;
     newobj = PyObject_GetAttr(obj, str);
@@ -220,7 +202,7 @@ static PyObject *
 getitem_str(PyObject *obj, SubString *name)
 {
     PyObject *newobj;
-    PyObject *str = STRINGLIB_NEW(name->ptr, name->end - name->ptr);
+    PyObject *str = SubString_new_object(name);
     if (str == NULL)
         return NULL;
     newobj = PyObject_GetItem(obj, str);
@@ -407,7 +389,7 @@ get_field_object(SubString *input, PyObject *args, PyObject *kwargs)
 
     if (index == -1) {
         /* look up in kwargs */
-        PyObject *key = STRINGLIB_NEW(first.ptr, first.end - first.ptr);
+        PyObject *key = SubString_new_object(&first);
         if (key == NULL)
             goto error;
         if ((kwargs == NULL) || (obj = PyDict_GetItem(kwargs, key)) == NULL) {
@@ -719,11 +701,13 @@ MarkupIterator_next(MarkupIterator *self, int *is_markup, SubString *literal,
         len = self->str.ptr - start;
 
         if ((c == '}') && (at_end || (c != *self->str.ptr))) {
-            SetError("Single } encountered");
+            PyErr_SetString(PyExc_ValueError, "Single '}' encountered "
+                            "in format string");
             return 0;
         }
         if (at_end && c == '{') {
-            SetError("Single { encountered");
+            PyErr_SetString(PyExc_ValueError, "Single '{' encountered "
+                            "in format string");
             return 0;
         }
         if (!at_end) {
index 5593ada3ee49389e4d9a6e3551321b12ecd0e82a..afe0e184ab2ac280ef19354c46dcb6e919d9d3e0 100644 (file)
@@ -8209,7 +8209,7 @@ fieldnameiter_next(fieldnameiterobject *it)
                 if (idx != -1)
                         obj = PyInt_FromSsize_t(idx);
                 else
-                        obj = STRINGLIB_NEW(name.ptr, name.end - name.ptr);
+                        obj = SubString_new_object(&name);
                 if (obj == NULL)
                         goto error;
 
@@ -8301,7 +8301,7 @@ unicode_formatter_field_name_split(PyUnicodeObject *self)
                 first_obj = PyInt_FromSsize_t(first_idx);
         else
                 /* convert "first" into a string object */
-                first_obj = STRINGLIB_NEW(first.ptr, first.end - first.ptr);
+                first_obj = SubString_new_object(&first);
         if (first_obj == NULL)
                 goto error;