--- MPIWGWeb/MPIWGProjects.py 2008/09/02 12:00:06 1.47.2.97
+++ MPIWGWeb/MPIWGProjects.py 2008/09/03 11:13:44 1.47.2.98
@@ -727,94 +727,8 @@ class MPIWGProject(CatalogAware,Folder):
"""warnung: project noch nicht existent"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','no_project')).__of__(self)
return pt()
-
- def getGetNeighbourhood(self,wordStr, length=100,tagging=True):
- """finde umgebung um die worte in wordStr, zurueckgegeben wird eine Array mit den Umgebungen von Fundstellen der Worte
- alle Tags werden entfernt, die Fundstellen werden mit XX getaggt, die Umgebungen werden
- case insensitive gesucht
- @param wordStr: string mit Worten getrennt durch Leerzeichen, Phrasen sind mit " gekennzeichnet
- "eine phrase", "*" bezeichnet wildcards und wird ignoriert"
- @param length: optional, default wert 100, 2*length ist die groesse der Umgebung
- @param tagging: optional default wert true, kein span tag wird erzweugt falls tag=false
- """
-
- ret=[] # nimmt das Array auf, dass spaeter zurueckgegeben wird
- ranges=[] #Array mit tupeln x,y wobei x die Position des Anfang und y des Endes der i-ten Umgebung angiebt
-
- def isInRanges(nr,length):
- """test ob eine gegeben Position nr schon irgendwo in einer Umgebung ist, gibt den Index des ersten Wertes aus ranges zurueck,
- -1, wenn kein Treffer
-
- @param nr: Position die geprueft werden soll
- @param length: Laenge des Wortes das geprueft werden soll
- """
- for x in ranges:
- if (x[0]<=nr) and (nr < (x[1]-length)):
- return ranges.index(x)
- return -1
-
- # deal with phrases, in Phrasen werden die Leerzeichen durch "_" ersetzt.
- def rep_empty(str):
- x= re.sub(" ","_",str.group(0))
- return re.sub("\"","",x)
-
- wordStr=re.sub("\".*?\"", rep_empty,wordStr)#ersetze leerzeichen in " " durch "_" und loesche "
-
- #deal with wildcards, for our purposes it is enough to delete the wildcard
- wordStr=wordStr.replace("*","")
-
- words=wordStr.split(" ")
- #if not words is ListType:
- # words=[words]
-
- txt=self.harvest_page()
- if not txt:
- return ret
- txt=re.sub("<.*?>", "", txt) # loesche alle Tags
- for word in words:
- word=re.sub("_"," ",word) # ersetze zurueck "_" durch " "
- pos=0
-
- n=txt.lower().count(word.lower()) # wie oft tritt das Wort auf
-
- for i in range(n):
- pos=txt.lower().find(word.lower(),pos)
-
- if pos > 0:
- x=max(0,pos-length)
- y=min(len(txt),pos+length)
-
-
- #is word already in one of the results
- nr=isInRanges(pos,len(word))
- if nr >=0:# word ist in einer schon gefunden Umgebung, dann vergroessere diese
- x=min(ranges[nr][0],x)
- y=max(ranges[nr][1],y)
-
- str=txt[x:y]
-
- if nr >=0: # word ist in einer schon gefunden Umgebung
- ranges[nr]=(x,y) # neue Position der Umgebung
-
- ret[nr]=str # neue Umgebung
- else: # andernfalls neue Umgebung hinzufuegen
- ranges.append((x,y))
-
- ret.append(str)
-
- pos=pos+len(word)
- else:
- break;
-
- # now highlight everything
- if tagging:
- for x in range(len(ret)):
- for word in words:
- repl=re.compile(word,re.IGNORECASE)
- ret[x]=repl.sub(""" %s"""%word.upper(),ret[x])
-
- return ret
-
+
+
def harvest_page(self,context=None):
"""seite fuer harvesting fuer die Projektsuche"""
if not context: