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
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
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')
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")
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()"))
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()"))