Ejemplo n.º 1
0
    def __getAnchors(self, stream):
        #=======================================================================
        # this code fragment is evil, since it raises an error on
        # imported umlauts:
        # newStream = HTML(stream)
        #
        # *** tried also this, but didn't work:
        #newStream = stream.select('//h1 [@id="trac-ticket-title"]//a/text()')
        #
        # *** tried also:
        #stream_str = '%s' % stream
        #stream_str = stream_str.encode('utf-8')
        #self.log.info("stream: ")
        #self.log.info(stream_str)
        #newStream = HTML(stream_str)
        #
        # *** tried also:
        #test = Path('//h1 [@id="trac-ticket-title"]//a/text()').test()
        #namespaces, variables = {}, {}
        #head = ''
        #for event in stream:
        #    if test(event, namespaces, variables):
        #        self.log.info('%s: %s' % (event[0], event[1]))
        #        print('%s %r' % (event[0], event[1]))
        #        if event[0] == 'TEXT':
        #            if isinstance(event[1], Markup):
        #                head += event[1].striptags()
        #            else:
        #                head += event[1]
        #        #START (QName('child'), Attrs([(QName('id'), u'2')]))
        #print "namespaces, variables; head: %s, %s; %s" % \
        #     (namespaces, variables, head)
        #======================================================================
        newStream = HTML(stream)
        self.anchors = {}
        self.keylist = []
        #headline
        headline = newStream.select('//h1 [@id="trac-ticket-title"]//a/text()')
        if headline:
            for item in headline:
                self.anchors[item[1]] = ''
                self.keylist.append(item[1])

        #further entities
        list = newStream.select('//h2 [@class="foldable"]/text()')
        if list:
            for index, item in enumerate(list):
                self.anchors[item[1]] = "no%s" % str(index + 1)
                self.keylist.append(item[1])
        list = newStream.select('//form [@id="propertyform"]//fieldset/@id')

        #comment
        comment = newStream.select('//h2 [@id="trac-add-comment"]//a/text()')
        for com in comment:
            self.anchors[com[1]] = "comment"
            self.keylist.append(com[1])

        return newStream
Ejemplo n.º 2
0
    def __getAnchors(self, stream):
        # =======================================================================
        # this code fragment is evil, since it raises an error on
        # imported umlauts:
        # newStream = HTML(stream)
        #
        # *** tried also this, but didn't work:
        # newStream = stream.select('//h1 [@id="trac-ticket-title"]//a/text()')
        #
        # *** tried also:
        # stream_str = '%s' % stream
        # stream_str = stream_str.encode('utf-8')
        # self.log.info("stream: ")
        # self.log.info(stream_str)
        # newStream = HTML(stream_str)
        #
        # *** tried also:
        # test = Path('//h1 [@id="trac-ticket-title"]//a/text()').test()
        # namespaces, variables = {}, {}
        # head = ''
        # for event in stream:
        #    if test(event, namespaces, variables):
        #        self.log.info('%s: %s' % (event[0], event[1]))
        #        print('%s %r' % (event[0], event[1]))
        #        if event[0] == 'TEXT':
        #            if isinstance(event[1], Markup):
        #                head += event[1].striptags()
        #            else:
        #                head += event[1]
        #        #START (QName('child'), Attrs([(QName('id'), u'2')]))
        # print "namespaces, variables; head: %s, %s; %s" % \
        #     (namespaces, variables, head)
        # ======================================================================
        newStream = HTML(stream)
        self.anchors = {}
        self.keylist = []
        # headline
        headline = newStream.select('//h1 [@id="trac-ticket-title"]//a/text()')
        if headline:
            for item in headline:
                self.anchors[item[1]] = ""
                self.keylist.append(item[1])

        # further entities
        list = newStream.select('//h2 [@class="foldable"]/text()')
        if list:
            for index, item in enumerate(list):
                self.anchors[item[1]] = "no%s" % str(index + 1)
                self.keylist.append(item[1])
        list = newStream.select('//form [@id="propertyform"]//fieldset/@id')

        # comment
        comment = newStream.select('//h2 [@id="trac-add-comment"]//a/text()')
        for com in comment:
            self.anchors[com[1]] = "comment"
            self.keylist.append(com[1])

        return newStream
Ejemplo n.º 3
0
 def filter_navitems(self, elements, req, data):
     data['prevnext'] = []
     prevnext = False
     for elem in elements:
         html = HTML(elem)
         spclasn = str(html.select('@class'))
         clasn = str(html.select('a/@class'))
         if clasn == 'prev' or clasn == 'next' or spclasn == 'missing':
             prevnext = True
         else:
             req.chrome.setdefault('ctxtnav', []).append(elem)
     if prevnext:
         self.prevnext_nav(req, 'Previous', 'Next')
Ejemplo n.º 4
0
 def filter_navitems(self, elements, req, data):
     data['prevnext'] = []
     prevnext = False
     for elem in elements:
         html = HTML(elem)
         spclasn = str(html.select('@class'))
         clasn = str(html.select('a/@class'))
         if clasn == 'prev' or clasn == 'next' or spclasn == 'missing':
             prevnext = True
         else:
             req.chrome.setdefault('ctxtnav', []).append(elem)
     if prevnext:
         self.prevnext_nav(req, 'Previous', 'Next')
Ejemplo n.º 5
0
 def filter_navitems(self, elements, req, data):
     data["prevnext"] = []
     prevnext = False
     for elem in elements:
         html = HTML(elem)
         spclasn = str(html.select("@class"))
         clasn = str(html.select("a/@class"))
         if clasn == "prev" or clasn == "next" or spclasn == "missing":
             prevnext = True
         else:
             req.chrome.setdefault("ctxtnav", []).append(elem)
     if prevnext:
         self.prevnext_nav(req, "Previous", "Next")
Ejemplo n.º 6
0
 def modify_browser(self, req, data):
     ctxtnavitems = req.chrome.pop('ctxtnav', [])
     add_ctxtnav(req, _('All sources'))
     prev = False
     for elem in ctxtnavitems:
         html = HTML(elem)
         clasn = str(html.select('a/@class'))
         if clasn == 'prev':
             prev = True
         elif clasn == 'next':
             self.prevnext_ctxnav(req, 'Prev', 'Next', 'Latest Rev')
         elif str(html.select('@class')) == 'missing':
             if prev:
                 self.prevnext_ctxnav(req, 'Prev', 'Next')
         else:
             if str(html.select('text()')).lower() != 'latest revision':
                 req.chrome.setdefault('ctxtnav', []).append(elem)
     add_ctxtnav(req, _("Diff changesets"), _("javascript: applydiff()"))
Ejemplo n.º 7
0
 def modify_browser(self, req, data):
     ctxtnavitems = req.chrome.pop('ctxtnav', [])
     add_ctxtnav(req, _('All sources'))
     prev = False
     for elem in ctxtnavitems:
         html = HTML(elem)
         clasn = str(html.select('a/@class'))
         if clasn == 'prev':
             prev = True
         elif clasn == 'next':
             self.prevnext_ctxnav(req, 'Prev', 'Next', 'Latest Rev')
         elif str(html.select('@class')) == 'missing':
             if prev:
                 self.prevnext_ctxnav(req, 'Prev', 'Next')
         else:
             if str(html.select('text()')).lower() != 'latest revision':
                 req.chrome.setdefault('ctxtnav', []).append(elem)
     add_ctxtnav(req, _("Diff changesets"), _("javascript: applydiff()"))
Ejemplo n.º 8
0
 def modify_browser(self, req, data):
     ctxtnavitems = req.chrome.pop("ctxtnav", [])
     add_ctxtnav(req, _("All sources"))
     prev = False
     for elem in ctxtnavitems:
         html = HTML(elem)
         clasn = str(html.select("a/@class"))
         if clasn == "prev":
             prev = True
         elif clasn == "next":
             self.prevnext_ctxnav(req, "Prev", "Next", "Latest Rev")
         elif str(html.select("@class")) == "missing":
             if prev:
                 self.prevnext_ctxnav(req, "Prev", "Next")
         else:
             if str(html.select("text()")).lower() != "latest revision":
                 req.chrome.setdefault("ctxtnav", []).append(elem)
     add_ctxtnav(req, _("Diff changesets"), _("javascript: applydiff()"))