+ COLS[index][2] = row[index][2]
+
+ # now that each cell has been munged together,
+ # determine the cell's alignment.
+ # Default is to center. Also determine the cell's
+ # vertical alignment, top, middle, bottom. Default is
+ # to middle
+ rows = []
+ cols = []
+ for row in ROWS:
+ for index in range(len(row)):
+ topindent = 0
+ bottomindent = 0
+ leftindent = 0
+ rightindent = 0
+ left = []
+ right = []
+ text = row[index][0]
+ text = split(text,'\n')
+ text = text[:len(text)-1]
+ align = ""
+ valign = ""
+ for t in text:
+ t = strip(t)
+ if not t:
+ topindent = topindent + 1
+ else:
+ break
+ text.reverse()
+ for t in text:
+ t = strip(t)
+ if not t:
+ bottomindent = bottomindent + 1
+ else:
+ break
+ text.reverse()
+ tmp = join(text[topindent:len(text)-bottomindent],"\n")
+ pars = re.compile("\n\s*\n").split(tmp)
+ for par in pars:
+ if index > 0:
+ par = par[1:]
+ par = split(par, ' ')
+ for p in par:
+ if not p:
+ leftindent = leftindent+1
+ else:
+ break
+ left.append(leftindent)
+ leftindent = 0
+ par.reverse()
+ for p in par:
+ if not p:
+ rightindent = rightindent + 1
+ else:
+ break
+ right.append(rightindent)
+ rightindent = 0
+ left.sort()
+ right.sort()
+
+ if topindent == bottomindent:
+ valign="middle"
+ elif topindent < 1:
+ valign="top"
+ elif bottomindent < 1:
+ valign="bottom"
+ else:
+ valign="middle"
+
+ if left[0] < 1:
+ align = "left"
+ elif right[0] < 1:
+ align = "right"
+ elif left[0] > 1 and right[0] > 1:
+ align="center"
+ else:
+ align="left"
+
+ cols.append(row[index][0],row[index][1],align,valign,row[index][2])
+ rows.append(cols)
+ cols = []
+ return StructuredTextTable(rows,text,subs,indent=paragraph.indent)