class Table(TableInterface): _parse = None # Parse def __init__(self, parse): if isinstance(parse, types.StringTypes): self._parse = Parse(parse) elif isinstance(parse, Parse): self._parse = parse def tableAt(self, i, j, k): at = self._parse.at(i, j, k).parts return Table(at) def stringAt(self, i, j, k): p2 = self._parse.at(i, j, k) if p2.parts or not p2.body: return "null" return p2.text() def toTable(self): return self def parseTable(parse): return Table(parse) parseTable = staticmethod(parseTable) def equals(expected, actual): if expected is None: return actual is None return expected == actual equals = staticmethod(equals) def __eq__(self, other): if not isinstance(other, Table): return False return self._parse == other._parse def __ne__(self, other): if isinstance(other, Table): return False return self._parse != other._parse def toString(self): return self._parse.toString() def __str__(self): return str(self._parse)
def testIndexing(self): p = Parse("leader<table><tr><td>one</td><td>two</td><td>three</td></tr><tr><td>four</td></tr></table>trailer") self.assertEquals("one", p.at(0, 0, 0).body) self.assertEquals("two", p.at(0, 0, 1).body) self.assertEquals("three", p.at(0, 0, 2).body) self.assertEquals("three", p.at(0, 0, 3).body) self.assertEquals("three", p.at(0, 0, 4).body) self.assertEquals("four", p.at(0, 1, 0).body) self.assertEquals("four", p.at(0, 1, 1).body) self.assertEquals("four", p.at(0, 2, 0).body) self.assertEquals(1, p.size()) self.assertEquals(2, p.parts.size()) self.assertEquals(3, p.parts.parts.size()) self.assertEquals("one", p.leaf().body) self.assertEquals("four", p.parts.last().leaf().body)
def testIndexing(self): p = Parse( "leader<table><tr><td>one</td><td>two</td><td>three</td></tr><tr><td>four</td></tr></table>trailer" ) self.assertEquals("one", p.at(0, 0, 0).body) self.assertEquals("two", p.at(0, 0, 1).body) self.assertEquals("three", p.at(0, 0, 2).body) self.assertEquals("three", p.at(0, 0, 3).body) self.assertEquals("three", p.at(0, 0, 4).body) self.assertEquals("four", p.at(0, 1, 0).body) self.assertEquals("four", p.at(0, 1, 1).body) self.assertEquals("four", p.at(0, 2, 0).body) self.assertEquals(1, p.size()) self.assertEquals(2, p.parts.size()) self.assertEquals(3, p.parts.parts.size()) self.assertEquals("one", p.leaf().body) self.assertEquals("four", p.parts.last().leaf().body)
def ResultingHTML(self): table = Parse(self.OriginalHTML) row = table.at(0, self.Row - 1) cell = row.at(0, self.Column - 1) if (self.OverwriteCellBody is not None): cell.body = self.OverwriteCellBody if (self.AddToCellBody is not None): cell.addToBody(self.AddToCellBody) if (self.OverwriteCellTag is not None): cell.tag = self.OverwriteCellTag if (self.OverwriteEndCellTag is not None): cell.end = self.OverwriteEndCellTag if (self.AddToCellTag is not None): cell.addToTag(self.stripDelimiters(self.AddToCellTag)) if (self.OverwriteRowTag is not None): row.tag = self.OverwriteRowTag if (self.OverwriteEndRowTag is not None): row.end = self.OverwriteEndRowTag if (self.AddToRowTag is not None): row.addToTag(self.stripDelimiters(self.AddToRowTag)) if (self.OverwriteTableTag is not None): table.tag = self.OverwriteTableTag if (self.OverwriteEndTableTag is not None): table.end = self.OverwriteEndTableTag if (self.AddToTableTag is not None): table.addToTag(self.stripDelimiters(self.AddToTableTag)) if (self.AddCellFollowing is not None): self.addParse(cell, self.AddCellFollowing, ["td"]) if (self.RemoveFollowingCell is not None): self.removeParse(cell) if (self.AddRowFollowing is not None): self.addParse(row, self.AddRowFollowing, ["tr", "td"]) if (self.RemoveFollowingRow is not None): self.removeParse(row) if (self.AddTableFollowing is not None): self.addParse(table, self.AddTableFollowing, ["table", "tr", "td"]) return self.GenerateOutput(table)