Merge branch '__images'
[librarian.git] / librarian / dcparser.py
index a907a52..bcee932 100644 (file)
@@ -6,6 +6,8 @@
 from xml.parsers.expat import ExpatError
 from datetime import date
 import time
+import re
+from librarian.util import roman_to_int
 
 from librarian import (ValidationError, NoDublinCore, ParseError, DCNS, RDFNS,
                        WLURI)
@@ -62,10 +64,17 @@ class Person(object):
 
 def as_date(text):
     try:
-        try:
-            t = time.strptime(text, '%Y-%m-%d')
-        except ValueError:
-            t = time.strptime(text, '%Y')
+        # check out the "N. poł X w." syntax
+        m = re.match(u"([12]) *poł[.]? ([MCDXVI]+) .*[.]?", text)
+        if m:
+            half = int(m.groups()[0])
+            century = roman_to_int(str(m.groups()[1]))
+            t = ((century*100 + (half-1)*50), 1, 1)
+        else:
+            try:
+                t = time.strptime(text, '%Y-%m-%d')
+            except ValueError:
+                t = time.strptime(text, '%Y')
         return date(t[0], t[1], t[2])
     except ValueError, e:
         raise ValueError("Unrecognized date format. Try YYYY-MM-DD or YYYY.")