Moved Person class from dcparser.person to dcparser.converters and removed module...
authorMarek Stępniowski <marek@stepniowski.com>
Sat, 6 Sep 2008 13:25:17 +0000 (15:25 +0200)
committerMarek Stępniowski <marek@stepniowski.com>
Sat, 6 Sep 2008 13:25:17 +0000 (15:25 +0200)
lib/dcparser/__init__.py
lib/dcparser/converters.py
lib/dcparser/dcparser.py
lib/dcparser/person.py [deleted file]

index 793f527..6912580 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
 
 from dcparser import parse, ParseError
-from person import Person
+from converters import Person
 
index 773aedd..b49c417 100644 (file)
@@ -3,14 +3,34 @@ from datetime import date
 import time
 import re
 
-from person import Person
+
+class Person(object):
+    """Single person with last name and a list of first names."""
+    def __init__(self, last_name, *first_names):
+        self.last_name = last_name
+        self.first_names = first_names
+    
+    
+    def __eq__(self, right):
+        return self.last_name == right.last_name and self.first_names == right.first_names
+    
+    
+    def __unicode__(self):
+        if len(self.first_names) > 0:
+            return '%s, %s' % (self.last_name, ' '.join(self.first_names))
+        else:
+            return self.last_name
+    
+    
+    def __repr__(self):
+        return 'Person(last_name=%r, first_names=*%r)' % (self.last_name, self.first_names)
 
 
-def str_to_unicode(value):
+def str_to_unicode(value, previous):
     return unicode(value)
 
 
-def str_to_person(value):
+def str_to_person(value, previous):
     comma_count = value.count(',')
     
     if comma_count == 0:
@@ -24,7 +44,7 @@ def str_to_person(value):
     return Person(last_name.strip(), *first_names)
 
 
-def str_to_date(value):
+def str_to_date(value, previous):
     try:
         t = time.strptime(value, '%Y-%m-%d')
     except ValueError:
index e8a733a..5df7700 100644 (file)
@@ -13,17 +13,14 @@ except ImportError:
 import converters
 
 
-
 __all__ = ('parse', 'ParseError')
 
 
-
 class ParseError(Exception):
     def __init__(self, message):
         super(self, Exception).__init__(message)
 
 
-
 class XMLNamespace(object):
     '''Represents XML namespace.'''
     
@@ -37,13 +34,12 @@ class XMLNamespace(object):
         return tag.startswith(str(self))
 
     def __repr__(self):
-        return 'NS(%r)' % self.uri
+        return 'XMLNamespace(%r)' % self.uri
     
     def __str__(self):
         return '%s' % self.uri
 
 
-
 class BookInfo(object):
     RDF = XMLNamespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#')
     DC = XMLNamespace('http://purl.org/dc/elements/1.1/')
@@ -63,13 +59,10 @@ class BookInfo(object):
         DC('source.URL')     : ('source_url', converters.str_to_unicode),
     }
 
-    
     @classmethod
     def from_string(cls, xml):
-        """docstring for from_string"""
         from StringIO import StringIO
         return cls.from_file(StringIO(xml))
-
     
     @classmethod
     def from_file(cls, xml_file):
@@ -89,15 +82,13 @@ class BookInfo(object):
         
         return book_info
 
-        
     def parse_element(self, element):
         try:
             attribute, converter = self.mapping[element.tag]
-            setattr(self, attribute, converter(element.text))
+            setattr(self, attribute, converter(element.text, getattr(self, attribute, None)))
         except KeyError:
             pass
 
-
     def to_xml(self):
         """XML representation of this object."""
         ET._namespace_map[str(self.RDF)] = 'rdf'
@@ -118,4 +109,3 @@ class BookInfo(object):
 def parse(file_name):
     return BookInfo.from_file(file_name)
 
-
diff --git a/lib/dcparser/person.py b/lib/dcparser/person.py
deleted file mode 100644 (file)
index 16412f7..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- coding: utf-8 -*-
-
-
-class Person(object):
-    """Single person with last name and a list of first names."""
-    def __init__(self, last_name, *first_names):
-        self.last_name = last_name
-        self.first_names = first_names
-    
-    
-    def __eq__(self, right):
-        return self.last_name == right.last_name and self.first_names == right.first_names
-    
-    
-    def __unicode__(self):
-        if len(self.first_names) > 0:
-            return '%s, %s' % (self.last_name, ' '.join(self.first_names))
-        else:
-            return self.last_name
-    
-    
-    def __repr__(self):
-        return 'Person(last_name=%r, first_names=*%r)' % (self.last_name, self.first_names)
-