Example #1
0
    def __init__(self, other=None, file_handle=None, file_name=None):
        if not other:
            self._text = r"\documentclass{article}" + "\n"
            self._text += "\n"
            self._text += r"\usepackage{graphicx}" + "\n"
            self._text += "\n"
            self._text += r"\usepackage[margin=0.5in]{geometry}" + "\n"
            self._text += "\n"
            self._text += "\usepackage{fancyhdr}" + "\n"
            self._text += "\n"
            self._text += "\pagestyle{fancy}" + "\n"
            self._text += "\n"
            self._text += "\lhead{\\today}" + "\n"
            self._text += "\n"
            self._text += r"\begin{document}"
            self._text += "\n"
            self.file_handle = file_handle

            self.items = []
            if not file_name:
                if file_handle:
                    self.file_handle.write(self._text)
            else:
                handle = open(file_name, "r")
                in_table = False

                for line in handle.readlines():
                    if line.startswith(r"\begin{table}"):
                        t = Table()
                        in_table = True
                    elif in_table:
                        if "&" in line:
                            elts = map(str.strip, line.split("&"))
                            if elts[-1].endswith(r" \\ \hline"):
                                elts[-1] = elts[-1][0 : -len(r" \\ \hline")]
                            sys.stderr.write("elts stripped: " + str(elts))
                            # If we are on the column labels line
                            if not t.has_column_labels():
                                t.column_labels = [elt.replace("\\", "") for elt in elts]
                            # A regular row
                            else:
                                t.add_row(elts[1:], elts[0].replace("\\", ""))
                        if line.startswith(r"\end{table}"):
                            in_table = False
                            self.add_item(t)
                handle.close()
        else:
            self._text = other.text
            self.items = copy.deepcopy(other.items)