def renderabstract(self, abstractstring): if not abstractstring: return '' retval = '' for line in abstractstring.splitlines(): absentry = gopherentry.getinfoentry(line, self.config) retval += self.renderobjinfo(absentry) return retval
def prepare(self): self.selectorbase = self.selector if self.selectorbase == "/": self.selectorbase = "" # Avoid dup slashes if (self.getselector().endswith(".gophermap") and self.statresult and stat.S_ISREG(self.statresult[stat.ST_MODE])): selector = self.getselector() else: selector = self.selectorbase + "/gophermap" self.entries = [] selectorbase = self.selectorbase with self.vfs.open(selector, "rb") as rfile: while True: line = rfile.readline().decode(errors="surrogateescape") if not line: break if re.search("\t", line): # gophermap link args = [arg.strip() for arg in line.split("\t")] if len(args) < 2 or not len(args[1]): args[1] = args[0][ 1:] # Copy display string to selector selector = args[1] if selector[0] != "/" and selector[ 0:4] != "URL:": # Relative link selector = selectorbase + "/" + selector entry = gopherentry.GopherEntry(selector, self.config) entry.type = args[0][0] entry.name = args[0][1:] if len(args) >= 3 and len(args[2]): entry.host = args[2] if len(args) >= 4 and len(args[3]): entry.port = int(args[3]) if entry.gethost() is None and entry.getport() is None: # If we're using links on THIS server, try to fill # it in for gopher+. if self.vfs.exists(selector): entry.populatefromvfs(self.vfs, selector) self.entries.append(entry) else: # Info line line = line.strip() self.entries.append( gopherentry.getinfoentry(line, self.config))
def prepare(self): self.selectorbase = self.selector if self.selectorbase == '/': self.selectorbase = '' # Avoid dup slashes if self.getselector().endswith(".gophermap") and \ self.statresult and S_ISREG(self.statresult[ST_MODE]): self.rfile = self.vfs.open(self.getselector(), 'rb') else: self.rfile = self.vfs.open(self.selectorbase + '/gophermap', 'rb') self.entries = [] selectorbase = self.selectorbase while 1: line = self.rfile.readline() if not line: break if re.search("\t", line): # gophermap link args = map(lambda arg: arg.strip(), line.split("\t")) if len(args) < 2 or not len(args[1]): args[1] = args[0][1:] # Copy display string to selector selector = args[1] if selector.startswith('URL:'): selector = '/' + selector elif selector[0] != '/': # Relative link selector = selectorbase + '/' + selector entry = gopherentry.GopherEntry(selector, self.config) entry.type = args[0][0] entry.name = args[0][1:] if len(args) >= 3 and len(args[2]): entry.host = args[2] if len(args) >= 4 and len(args[3]): entry.port = int(args[3]) if entry.gethost() == None and entry.getport() == None: # If we're using links on THIS server, try to fill # it in for gopher+. if self.vfs.exists(selector): entry.populatefromvfs(self.vfs, selector) self.entries.append(entry) else: # Info line line = line.strip() self.entries.append(gopherentry.getinfoentry(line, self.config))
def prepare(self): self.selectorbase = self.selector if self.selectorbase == '/': self.selectorbase = '' # Avoid dup slashes if self.getselector().endswith(".gophermap") and \ self.statresult and S_ISREG(self.statresult[ST_MODE]): self.rfile = self.vfs.open(self.getselector(), 'rb') else: self.rfile = self.vfs.open(self.selectorbase + '/gophermap', 'rb') self.entries = [] selectorbase = self.selectorbase while 1: line = self.rfile.readline() if not line: break if re.search("\t", line): # gophermap link args = [arg.strip() for arg in line.split("\t")] if len(args) < 2 or not len(args[1]): args[1] = args[0][1:] # Copy display string to selector selector = args[1] if selector[0] != '/' and selector[ 0:4] != "URL:": # Relative link selector = selectorbase + '/' + selector entry = gopherentry.GopherEntry(selector, self.config) entry.type = args[0][0] entry.name = args[0][1:] if len(args) >= 3 and len(args[2]): entry.host = args[2] if len(args) >= 4 and len(args[3]): entry.port = int(args[3]) if entry.gethost() == None and entry.getport() == None: # If we're using links on THIS server, try to fill # it in for gopher+. if self.vfs.exists(selector): entry.populatefromvfs(self.vfs, selector) self.entries.append(entry) else: # Info line line = line.strip() self.entries.append(gopherentry.getinfoentry( line, self.config))