--- Name_Toponymie.py.orig	2011-03-27 15:01:50.000000000 +0200
+++ Name_Toponymie.py	2011-03-27 17:08:07.363333732 +0200
@@ -86,6 +86,29 @@
         self.special = set(special2)
         
         self.minus = u"abcdefghijklmnopqrstuvwxyzàäâéèëêïîöôüûÿ"
+        
+        # Les apostrophes sont replacées par des caractères à usage privé d'Unicode
+        aposSubst = {u"'" : u"\ue000", u"’" : u"\ue001", u"&apos;" : u"\ue002"}
+        apos = [u"c'h", u"C'h", u"Prud'homme"]
+        
+        self.aposSubst = dict()
+        for x in apos:
+	    for y in aposSubst.keys():
+		before = x.replace(u"'", y)
+		after  = x.replace(u"'", aposSubst[y])
+		self.aposSubst[before] = after
+	    
+        self.aposUnSubst = {u"\ue000" : u"'", u"\ue001" : u"’", u"\ue002" : u"&apos;"}
+    
+    def unapos(self, name):
+	for x in self.aposSubst.keys():
+	    name = name.replace(x, self.aposSubst[x])
+	return name
+	
+    def reapos(self, name):
+	for x in self.aposUnSubst.keys():
+	    name = name.replace(x, self.aposUnSubst[x]);
+	return name;
                             
     def _split(self, name):
         for x in [u"’", u"\xa0", u"°", u"'", u"&amp;", u"&apos;", u"&quot;", u"/", u")", u"-", u"\"", u";", u".", u":", u"+", u"?", u"!", u",", u"|", u"*", u"Â°", u"_", u"="]:
@@ -99,7 +122,10 @@
         if (u"highway" not in tags) and (u"waterway" not in tags) and (u"place" not in tags):
             return
         words = []
-        split = self._split(tags[u"name"])
+        unapos = self.unapos(tags[u"name"])
+        split = self._split(unapos)
+        for i in range(len(split)):
+	    split[i] = self.reapos(split[i])
         if split and split[0] and split[0][0] in self.minus:
             words.append(split[0])
         for word in split:
@@ -107,8 +133,6 @@
                 continue
             if word[0] in self.minus:
                 words.append(word)
-        if words and (u"homme" in words) and ("Prud'homme" in tags[u"name"]):
-            words.remove(u"homme")
         if words:
             return [(906, abs(hash(str(words))), {"fr": u"majuscule manquante à : %s"%u", ".join(set(words)),"en": u"missing caps letter for: %s"%u", ".join(set(words))})]
         return
