示例#1
0
 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
示例#2
0
文件: base.py 项目: Almad/pygopherd
 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
示例#3
0
    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))
示例#4
0
    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))
示例#5
0
    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))