def search(self, searcher): # Loaders are responsible for searching on PackageInfo. They # should use the fastest possible method. The one here is # generic, and should be replaced if possible. ic = searcher.ignorecase for pkg in self._packages: info = self.getInfo(pkg) ratio = 0 if searcher.url: for url, cutoff in searcher.url: for refurl in info.getReferenceURLs(): _, newratio = globdistance(url, refurl, cutoff, ic) if newratio > ratio: ratio = newratio if ratio == 1: break else: continue break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.path: for spath, cutoff in searcher.path: for path in info.getPathList(): _, newratio = globdistance(spath, path, cutoff, ic) if newratio > ratio: ratio = newratio if ratio == 1: break else: continue break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.group: for pat in searcher.group: if pat.search(info.getGroup()): ratio = 1 break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.summary: for pat in searcher.summary: if pat.search(info.getSummary()): ratio = 1 break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.description: for pat in searcher.description: if pat.search(info.getDescription()): ratio = 1 break if ratio: searcher.addResult(pkg, ratio)
def search(self, searcher): myname = self.name myversion = self.version ratio = 0 for nameversion, cutoff in searcher.nameversion: _, ratio1 = globdistance(nameversion, myname, cutoff) _, ratio2 = globdistance(nameversion, "%s-%s" % (myname, myversion), cutoff) ratio = max(ratio, ratio1, ratio2) if ratio: searcher.addResult(self, ratio)
def search(self, searcher): myname = self.name myversion = self.version ratio = 0 ic = searcher.ignorecase for provides, cutoff in searcher.provides: _, ratio1 = globdistance(provides, myname, cutoff, ic) _, ratio2 = globdistance(provides, "%s-%s" % (myname, myversion), cutoff, ic) ratio = max(ratio, ratio1, ratio2) if ratio: searcher.addResult(self, ratio)
def search(self, searcher): for h, offset in self.getHeaders(Progress()): pkg = self._offsets.get(offset) if not pkg: continue ratio = 0 if searcher.url: refurl = h[rpm.RPMTAG_URL] if refurl: for url, cutoff in searcher.url: _, newratio = globdistance(url, refurl, cutoff) if newratio > ratio: ratio = newratio if ratio == 1: break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.path: paths = h[rpm.RPMTAG_OLDFILENAMES] if paths: for spath, cutoff in searcher.path: for path in paths: _, newratio = globdistance(spath, path, cutoff) if newratio > ratio: ratio = newratio if ratio == 1: break else: continue break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.group: group = self._groups[pkg] for pat in searcher.group: if pat.search(group): ratio = 1 break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.summary: summary = h[rpm.RPMTAG_SUMMARY] for pat in searcher.summary: if pat.search(summary): ratio = 1 break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.description: description = h[rpm.RPMTAG_DESCRIPTION] for pat in searcher.description: if pat.search(description): ratio = 1 break if ratio: searcher.addResult(pkg, ratio)
def search(self, searcher): ic = searcher.ignorecase for h, offset in self.getHeaders(Progress()): pkg = self._offsets.get(offset) if not pkg: continue ratio = 0 if searcher.url: refurl = h[rpm.RPMTAG_URL] if refurl: for url, cutoff in searcher.url: _, newratio = globdistance(url, refurl, cutoff, ic) if newratio > ratio: ratio = newratio if ratio == 1: break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.path: paths = h[rpm.RPMTAG_OLDFILENAMES] if paths: if type(paths) != list: paths = [paths] for spath, cutoff in searcher.path: for path in paths: _, newratio = globdistance(spath, path, cutoff, ic) if newratio > ratio: ratio = newratio if ratio == 1: break else: continue break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.group: group = self._groups[pkg] for pat in searcher.group: if pat.search(group): ratio = 1 break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.summary: summary = h[rpm.RPMTAG_SUMMARY] for pat in searcher.summary: if pat.search(summary): ratio = 1 break if ratio == 1: searcher.addResult(pkg, ratio) continue if searcher.description: description = h[rpm.RPMTAG_DESCRIPTION] for pat in searcher.description: if pat.search(description): ratio = 1 break if ratio: searcher.addResult(pkg, ratio)