Пример #1
0
def test_transform_tables__with_header():
    E = ElementMaker()
    # fmt: off
    fmx_tbl = E.TBL(
        E.CORPUS(
            E.ROW(E.CELL("Header 1", TYPE="HEADER"),
                  E.CELL("Header 2", TYPE="HEADER"),
                  TYPE="HEADER"),
            E.ROW(E.CELL("A1"), E.CELL("B1")),
            E.ROW(E.CELL("A2"), E.CELL("B2")),
            E.ROW(E.CELL("A3"), E.CELL("B3")),
        ))
    # fmt: on
    tree = E.FORMEX(fmx_tbl)
    builder = StrBuilder()
    parser = FormexParser(builder)
    parser.transform_tables(tree)
    str_table = tree.xpath("//table")[0].text
    # print("str_table:")
    # print(str_table)
    # fmt: off
    assert str_table == textwrap.dedent("""\
    +-----------+-----------+
    | Header 1  | Header 2  |
    +-----------+-----------+
    |    A1     |    B1     |
    +-----------+-----------+
    |    A2     |    B2     |
    +-----------+-----------+
    |    A3     |    B3     |
    +-----------+-----------+""")
Пример #2
0
def test_parse_fmx_cell__with_cals():
    E = ElementMaker()
    fmx_cell = E.CELL(
        colsep="1",
        rowsep="1",
        namest="c1",
        nameend="c3",
        bgcolor="#00007f",
        morerows="1",
        align="center",
        valign="middle",
    )
    parser = FormexParser(BaseBuilder())
    state = parser.setup_table()
    state.next_row()
    state.row = state.table.rows[state.row_pos]
    parser.parse_fmx_cell(fmx_cell)
    table = state.table
    cell = table[(1, 1)]
    assert cell.styles == {
        'align': 'center',
        'background-color': '#00007f',
        'vertical-align': 'middle',
        'x-cell-border-bottom': 'solid 1pt black',
        'x-cell-border-right': 'solid 1pt black',
    }
    assert cell.nature is None
    assert cell.size == (3, 2)
Пример #3
0
def test_transform_tables__no_namespace():
    E = ElementMaker()
    fmx_tbl = E.TBL(
        E.CORPUS(E.ROW(E.CELL("A1"), E.CELL("B1", ROWSPAN="2")),
                 E.ROW(E.CELL("A2"))))
    tree = E.FORMEX(fmx_tbl)
    builder = StrBuilder()
    parser = FormexParser(builder)
    parser.transform_tables(tree)
    str_table = tree.xpath("//table")[0].text
    # print("str_table:")
    # print(str_table)
    # fmt: off
    assert str_table == textwrap.dedent("""\
    +-----------+-----------+
    |    A1     |    B1     |
    +-----------|           |
    |    A2     |           |
    +-----------+-----------+""")
Пример #4
0
def test_parse_fmx_cell(attrib, styles, nature, size):
    E = ElementMaker()
    fmx_cell = E.CELL(**attrib)
    parser = FormexParser(BaseBuilder())
    state = parser.setup_table()
    state.next_row()
    state.row = state.table.rows[state.row_pos]
    parser.parse_fmx_cell(fmx_cell)
    table = state.table
    cell = table[(1, 1)]
    assert cell.styles == styles
    assert cell.nature == nature
    assert cell.size == size
Пример #5
0
def test_transform_tables__with_namespace():
    E = ElementMaker(namespace=FORMEX_NS, nsmap={FORMEX_PREFIX: FORMEX_NS})
    colspan = etree.QName(FORMEX_NS, "COLSPAN")
    # fmt: off
    tree = E.FORMEX(
        E.TBL(
            E.CORPUS(E.ROW(E.CELL("A1"), E.CELL("B1")),
                     E.ROW(E.CELL("A2", **{colspan.text: "2"})))))
    # fmt: on
    builder = StrBuilder()
    parser = FormexParser(builder,
                          formex_prefix=FORMEX_PREFIX,
                          formex_ns=FORMEX_NS)
    parser.transform_tables(tree)
    str_table = tree.xpath("//table")[0].text
    # print("str_table:")
    # print(str_table)
    # fmt: off
    assert str_table == textwrap.dedent("""\
    +-----------+-----------+
    |    A1     |    B1     |
    +-----------------------+
    |    A2                 |
    +-----------------------+""")