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)
Exemple #2
0
 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)
Exemple #3
0
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)
Exemple #4
0
 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)
    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)