Commit 99d5e79d authored by john's avatar john

removed annoying output from ClassicDocumentClass. Added support

for determining align and valign for table cells to DocumentClass.
Updated HTMLClass to be able to handle DocumentClass's updated
information. Resolved some insertion problems associated with
ST.py
parent 1a61961b
...@@ -430,6 +430,7 @@ class DocumentClass: ...@@ -430,6 +430,7 @@ class DocumentClass:
return result return result
def doc_table(self,paragraph, expr = re.compile('(\s*)([||]+)').match): def doc_table(self,paragraph, expr = re.compile('(\s*)([||]+)').match):
#print "paragraph=>", type(paragraph), paragraph, paragraph._src
text = paragraph.getColorizableTexts()[0] text = paragraph.getColorizableTexts()[0]
m = expr(text) m = expr(text)
......
...@@ -222,7 +222,11 @@ class StructuredTextRow(ST.StructuredTextDocument): ...@@ -222,7 +222,11 @@ class StructuredTextRow(ST.StructuredTextDocument):
apply(ST.StructuredTextDocument.__init__,(self,[]),kw) apply(ST.StructuredTextDocument.__init__,(self,[]),kw)
self._columns = [] self._columns = []
for column in row: for column in row:
self._columns.append(StructuredTextColumn(column[0],column[1],kw)) self._columns.append(StructuredTextColumn(column[0],
column[1],
column[2],
column[3],
kw))
def getColumns(self): def getColumns(self):
return [self._columns] return [self._columns]
...@@ -245,9 +249,11 @@ class StructuredTextColumn(ST.StructuredTextParagraph): ...@@ -245,9 +249,11 @@ class StructuredTextColumn(ST.StructuredTextParagraph):
or StructuredTextTableData. or StructuredTextTableData.
""" """
def __init__(self,text,span,kw): def __init__(self,text,span,align,valign,kw):
apply(ST.StructuredTextParagraph.__init__,(self,text,[]),kw) apply(ST.StructuredTextParagraph.__init__,(self,text,[]),kw)
self._span = span self._span = span
self._align = align
self._valign = valign
def getSpan(self): def getSpan(self):
return self._span return self._span
...@@ -255,6 +261,18 @@ class StructuredTextColumn(ST.StructuredTextParagraph): ...@@ -255,6 +261,18 @@ class StructuredTextColumn(ST.StructuredTextParagraph):
def _getSpan(self): def _getSpan(self):
return self._span return self._span
def getAlign(self):
return self._align
def _getAlign(self):
return self.getAlign()
def getValign(self):
return self._valign
def _getValign(self):
return self.getValign()
class StructuredTextTableHeader(ST.StructuredTextDocument): pass class StructuredTextTableHeader(ST.StructuredTextDocument): pass
class StructuredTextTableData(ST.StructuredTextDocument): pass class StructuredTextTableData(ST.StructuredTextDocument): pass
...@@ -599,10 +617,94 @@ class DocumentClass: ...@@ -599,10 +617,94 @@ class DocumentClass:
ROWS.append(COLS) ROWS.append(COLS)
COLS = [] COLS = []
else: else:
COLS[index][0] = COLS[index][0] + strip(row[index][0]) + "\n" #COLS[index][0] = COLS[index][0] + strip(row[index][0]) + "\n"
COLS[index][0] = COLS[index][0] + (row[index][0]) + "\n"
COLS[index][1] = row[index][1] COLS[index][1] = row[index][1]
return StructuredTextTable(ROWS,text,subs,indent=paragraph.indent) # 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] == right[0]:
align="center"
elif left[0] < 1:
align="left"
elif right[0] < 1:
align="right"
else:
align="left"
cols.append(row[index][0],row[index][1],align,valign)
#print text, align, valign
#print text, topindent, bottomindent, left[0], right[0]
rows.append(cols)
cols = []
return StructuredTextTable(rows,text,subs,indent=paragraph.indent)
#return StructuredTextTable(ROWS,text,subs,indent=paragraph.indent)
def doc_bullet(self, paragraph, expr = re.compile('\s*[-*o]\s+').match): def doc_bullet(self, paragraph, expr = re.compile('\s*[-*o]\s+').match):
top=paragraph.getColorizableTexts()[0] top=paragraph.getColorizableTexts()[0]
......
...@@ -279,6 +279,9 @@ class HTMLClass: ...@@ -279,6 +279,9 @@ class HTMLClass:
for row in doc.getRows()[0]: for row in doc.getRows()[0]:
output("<tr>\n") output("<tr>\n")
for column in row.getColumns()[0]: for column in row.getColumns()[0]:
if hasattr(column,"getAlign"):
str = "<td colspan=%s align=%s valign=%s>" % (column.getSpan(),column.getAlign(),column.getValign())
else:
str = "<td colspan=%s>" % column.getSpan() str = "<td colspan=%s>" % column.getSpan()
output(str) output(str)
#for c in doc.getChildNodes(): #for c in doc.getChildNodes():
......
...@@ -26,7 +26,9 @@ def insert(struct, top, level): ...@@ -26,7 +26,9 @@ def insert(struct, top, level):
""" """
#print "struct", struct, top-1 #print "struct", struct, top-1
if not top-1 in range(len(struct)): if not top-1 in range(len(struct)):
return None if struct:
return struct[len(struct)-1].getSubparagraphs()
return struct
run = struct[top-1] run = struct[top-1]
i = 0 i = 0
while i+1 < level: while i+1 < level:
...@@ -142,6 +144,9 @@ def StructuredText(paragraphs, paragraph_delimiter=re.compile('\n\s*\n')): ...@@ -142,6 +144,9 @@ def StructuredText(paragraphs, paragraph_delimiter=re.compile('\n\s*\n')):
if result > 0: if result > 0:
currentlevel = result currentlevel = result
currentindent = indent currentindent = indent
if not level:
struct.append(StructuredTextParagraph(paragraph, indent=indent, level=currentlevel))
else:
run = insert(struct,level,currentlevel) run = insert(struct,level,currentlevel)
run.append(StructuredTextParagraph(paragraph, indent=indent, level=currentlevel)) run.append(StructuredTextParagraph(paragraph, indent=indent, level=currentlevel))
else: else:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment