def _evaluate(self, fieldname, value): if fieldname.startswith('dcterms:spatial.') and fieldname.endswith('.geos:asWKT'): geometry = Geometry.parseWkt(value) for (geoLong, geoLat) in geometry.pointCoordinates(): yield 'dcterms:spatial.geo:long', geoLong yield 'dcterms:spatial.geo:lat', geoLat return if fieldname == 'dcterms:spatial.uri': if value.startswith('geo:'): geoLat, _, geoLong = value[len('geo:'):].partition(',') yield 'dcterms:spatial.geo:long', geoLong yield 'dcterms:spatial.geo:lat', geoLat return if fieldname in ['dc:date', 'dcterms:created']: for year in parseYears(value): yield 'dc:date.year', str(year) yield fieldname, value
def testParseYears(self): self.assertEquals([2000], parseYears("2000-01-01")) self.assertEquals([2000], parseYears("2000-01-01T01:01:01Z")) self.assertEquals([2000], parseYears("2000-01")) self.assertEquals([2000], parseYears("2000")) self.assertEquals([2000, 2001, 2002, 2003, 2004], parseYears("2000 - 2004")) self.assertEquals([2000, 2001, 2002, 2003, 2004], parseYears("2000-2004")) self.assertEquals([2000], parseYears("2000 - ...")) self.assertEquals([2000], parseYears("2000-...")) self.assertEquals([2001], parseYears("[2001]")) self.assertEquals([2000], parseYears("01-01-2000")) self.assertEquals([2000], parseYears("[ca. 2000]")) self.assertEquals([2000, 2001, 2002, 2003, 2004], parseYears("ca. 2000 - ca. 2004")) self.assertEquals([2000], parseYears("cop. 2000")) self.assertEquals([1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949], parseYears("194X")) self.assertEquals(range(1940, 1970), parseYears("194X - 196x")) self.assertEquals([], parseYears("20e eeuw")) self.assertEquals(range(1900, 2000), parseYears("19X"))