--- cdli/cdli_files.py 2006/12/22 20:35:33 1.55 +++ cdli/cdli_files.py 2007/01/08 14:36:28 1.56 @@ -1936,17 +1936,19 @@ class CDLIRoot(Folder): """get the index for debug purposes""" print "show" for x in self.lineIndex.iterkeys(): - print "word:",x - for y in self.lineIndex[x].iterkeys(): - print "doc",y,self.lineIndex[x][y] + print "word:",repr(x) + #for y in self.lineIndex[x].iterkeys(): + # print "doc",repr(y),repr(self.lineIndex[x][y]) return self.lineIndex def searchInLineIndexDocs(self,word,uniq=True): """search occurences""" - - lst=list(self.lineIndex.get(word.upper()).keys()) + try: + lst=list(self.lineIndex.get(word).keys()) + except: + lst=[] if uniq: return unique(lst) else: @@ -1954,7 +1956,8 @@ class CDLIRoot(Folder): def getLinesFromIndex(self,word,doc): """get lines""" - return self.lineIndex[word][doc] + + return self.lineIndex.get(word)[doc] def cleanInLineIndex(self): """delete InlineIndex""" @@ -2000,18 +2003,69 @@ class CDLIRoot(Folder): return f[0].getObject().getLastVersionFormattedData() - def showLineFromFile(self,fileId,lineNum): + def showLineFromFile(self,fileId,lineNum,word): """get line lineNum fromFileId""" file=self.showFile(fileId) - str="^%s\.(.*)"%lineNum - - m=re.search(str,file,flags=re.M) - if m: - return m.group(1) - else: - return "" + #str="^%s\.[^%s\.]*%s[^\n]*\n"%(lineNum,lineNum,word) + #str="^%s\..*?%s[^\n]*\n"%(lineNum,word) + + #print str + #m=re.search(str,file,flags=re.M|re.DOTALL) + #if m: + # return m.group() + #else: + # return "" + #ret=lineNum+"." + #splitted=file.split(lineNum+".") + #if len(splitted)>1: + #for part in splitted[1:]: + #if part.find(word)>-1: + # for x in part.split("\n"): + #ret+=x + #if x.find(word)>-1: + #break + #break; + #return ret + + def showWordInFile(self,fileId,word,lineList=None): + """get lines with word fromFileId""" + file=self.showFile(fileId) + + ret=[] + for line in file.split("\n"): + if line.find(word)>-1: + if lineList: #liste of moeglichen Zeilennummern + num=line.split(".")[0] #Zeilenummer ist alles vor dem . in der Zeile + + if num in lineList: + + ret.append(line) + else: # nimm alles ohne line check + ret.append(line) + return ret + + def tagWordInFile(self,fileId,word,lineList=None): + """get lines with word fromFileId""" + + file=self.showFile(fileId) + tagStr="""%s""" + ret=[] + for line in file.split("\n"): + if line.find(word)>-1: + if lineList: #liste of moeglichen Zeilennummern + num=line.split(".")[0] #Zeilenummer ist alles vor dem . in der Zeile + + if num in lineList: + + ret.append(line.replace(word,tagStr%word)) + else: # nimm alles ohne line check + ret.append(line.replace(word,tagStr%word)) + else: + ret.append(line) + return "
\n".join(ret) + def URLquote(self,str): """quote url""" return urllib.quote(str)