示例#1
0
文件: wx.py 项目: ssbr/djirc
 def receive_xml(self, element):
     start = self.control.GetLastPosition()
     self.control.AppendText(common.etree_tostring(element) + '\n')
     
     # starts[node] = start_of_element
     starts = {}
     ends = {}
     
     # we'll mark up in order of endpoints. It doesn't make a difference
     # (due to perfect nesting)
     pos = 0
     for node, seen in common.dfs(element):
         if not seen:
             starts[node] = pos + start
             pos += len(node.text or '')
         else:
             ends[node] = pos + start
             pos += len(node.tail or '')
             
     for node, start in sorted(starts.iteritems(), key=operator.itemgetter(1)):
         try:
             end = ends[node]
         except KeyError:
             log.err()
             continue
         
         attr = element2TextAttr(node)
         success = self.control.SetStyle(start, end, attr)
         if not success:
             log.err("SetStyle failed for element: %s" %
                 etree.tostring(node))
示例#2
0
文件: test_common.py 项目: ssbr/djirc
 def test_simple_nested(self):
     A = etree.Element('A')
     B = etree.SubElement(A, 'B')
     self.assertEqual(list(common.dfs(A)),
         [(A, False),
             (B, False),
             (B, True),
         (A, True)])
示例#3
0
文件: test_common.py 项目: ssbr/djirc
 def test_nested_traversal_order(self):
     # test that B comes before C
     A = etree.Element('A')
     B = etree.SubElement(A, 'B')
     C = etree.SubElement(A, 'C')
     self.assertEqual(list(common.dfs(A)),
         [(A, False),
             (B, False),
             (B, True),
             (C, False),
             (C, True),
         (A, True)])
示例#4
0
文件: test_common.py 项目: ssbr/djirc
 def test_singleton(self):
     e = etree.fromstring('<empty/>')
     self.assertEqual(list(common.dfs(e)), [(e, False), (e, True)])