# - - - P h y s R o w . h t m l def html(self, sox, rowx): '''Render self as XHTML using the appearance for row (rowx). '''
There are two rules governing the thickening of top cell
borders. The first row has a thick top border; see Section 13.4.16, “
CLASS_FIRST”. After that, every row that is a
ROW_GROUPING has a medium top border;
see Section 13.4.18, “
For a discussion of the general approach to combining CSS
classes from multiple sources, see Section 4.5, “CSS considerations in page design”. This is implemented by creating a dictionary named
addCss that may or may not contain CSS class markup,
and passing that dictionary down to the cell renderer to be
combined with its CSS for thickening left borders.
#-- 1 if rowx == 0: addCss = CLASS_FIRST elif (rowx % ROW_GROUPING) == 0: addCss = CLASS_TOPPER else: addCss = None
Not all physical rows even have a cell in the row-label column: if this is a continuation row, the first cell is omitted because the first physical row of this logical row had a row label that spanned the first column of all the physical rows.
If the row label is spanned (that is,
0), we add the
th element generated by
RowLabel instance, then add to that element
rowspan attribute for the number of rows
#-- 2 # [ sox +:= a new tr start tag # tr := the sox.Elt for that element ] tr = sox.start("tr") #-- 3 # [ if self._span is 0 -> # I # else -> # sox +:= a th et.Element representing self._rowLabel # with a rowspan attribute whose value is self._span ] if self._span > 0: self._rowLabel.html(sox, rowspan=str(self._span))
More CSS attributes may be added to thicken the rules on the
left side of columns whose index is a multiple of
#-- 4 # [ tr +:= elements of self._cellList rendered as XHTML ] for colx, cell in enumerate(self._cellList): #-- 4 body # [ if colx is a multiple of COL_GROUPING -> # sox +:= a new td representing cell with the additional # style classes in addCss and CLASS_LEFTER # else -> # sox +:= a new td representing cell with the additional # style classes in addCss ] if (colx % COL_GROUPING) == 0: css = combineCss(addCss, CLASS_LEFTER) else: css = addCss cell.html(sox, css) #-- 5 tr.end()