def testFixNs(self): """Test fixing namespaces in an XPath expression.""" e = ElementBase() ns = "http://jabber.org/protocol/disco#items" result = e._fix_ns("{%s}foo/bar/{abc}baz/{%s}more" % (ns, ns)) expected = "/".join( ["{%s}foo" % ns, "{%s}bar" % ns, "{abc}baz", "{%s}more" % ns]) self.assertTrue(expected == result, "Incorrect namespace fixing result: %s" % str(result))
def update_filters(self, matcher): if not self.filters: messages = self.core_buffer.messages[:] self.filtered_buffer.messages = [] self.core_buffer.del_window(self.text_win) self.filtered_buffer.add_window(self.text_win) else: messages = self.filtered_buffer.messages self.filtered_buffer.messages = [] self.filters.append(matcher) new_messages = [] for msg in messages: if self.match_stanza( ElementBase(ET.fromstring(clean_text(msg.txt)))): new_messages.append(msg) self.filtered_buffer.messages = new_messages self.text_win.rebuild_everything(self.filtered_buffer) self.gen_filter_repr()
def update_filters(self, matcher): if not self.filters: messages = self.core_buffer.messages[:] self.filtered_buffer.messages = [] self.core_buffer.del_window(self.text_win) self.filtered_buffer.add_window(self.text_win) else: messages = self.filtered_buffer.messages self.filtered_buffer.messages = [] self.filters.append(matcher) new_messages = [] for msg in messages: try: if msg.txt.strip() and self.match_stanza(ElementBase(ET.fromstring(clean_text(msg.txt)))): new_messages.append(msg) except ET.ParseError: log.debug('Malformed XML : %s', msg.txt, exc_info=True) self.filtered_buffer.messages = new_messages self.text_win.rebuild_everything(self.filtered_buffer) self.gen_filter_repr()
def outgoing_stanza(self, stanza): """ We are sending a new stanza, write it in the xml buffer if needed. """ if self.xml_tab: if PYGMENTS: xhtml_text = highlight('%s' % stanza, LEXER, FORMATTER) poezio_colored = xhtml.xhtml_to_poezio_colors(xhtml_text, force=True).rstrip('\x19o').strip() else: poezio_colored = '%s' % stanza self.add_message_to_text_buffer(self.xml_buffer, poezio_colored, nickname=get_theme().CHAR_XML_OUT) try: if self.xml_tab.match_stanza(ElementBase(ET.fromstring(stanza))): self.add_message_to_text_buffer(self.xml_tab.filtered_buffer, poezio_colored, nickname=get_theme().CHAR_XML_OUT) except: log.debug('', exc_info=True) if isinstance(self.current_tab(), tabs.XMLTab): self.current_tab().refresh() self.doupdate()