Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

v0.5.1 (2019-11-12)

Bug fix release

Changed

Add the parse_width() function used to parse a width and return the value and its unit.

Fixed

  • Documentation: add missing link to convert_cals2formex in the main page.

  • Fix #4: Remove superfluous attributes in cals2formex.

    Change in the FormexBuilder class: Add the drop_superfluous_attrs() method: drop superfluous CALS-like attributes at the end of the Formex building.

  • Fix #5: The title generation should be optional.

    Change in the Formex4Builder class: Add the detect_titles option: if this option is enable, a title will be generated if the first row contains an unique cell with centered text. The detect_titles options is disable by default.

  • Change in the Formex4Builder class: Allow empty strings for cals_ns and cals_prefix options.

  • Fix #6: Formex 2 Cals conversion: missing entry/@valign.

    Change in the FormexParser class: The “vertical-align” style is built from the @cals:valign attribute.

    Change in the CalsParser class: The “vertical-align” style is built from the @cals:valign attribute.

    Change in the FormexBuilder class: The @cals:valign attribute is built from the “vertical-align” style.

    Change in the CalsBuilder class: The @cals:valign attribute is built from the “vertical-align” style.

  • Fix #7: Formex 2 Cals conversion: missing table/@width.

    Change in the CalsBuilder class: Add support for the @width attribute (table width).

    Change in the FormexBuilder class: Add support for the @width CALS-like attribute (table width).

  • Minor change in the OoxmlParser class: XML indentation between cell paragraphs is ignored.

  • Fix #9: Cals 2 Formex conversion: Text and PIs lost in entries.

    Add the append_cell_elements() method: Append XML elements, PIs or texts to a cell element.

    Change in the CalsBuilder and FormexBuilder classes: Preserve processing instruction in cell content.

  • Fix #10: Formex 2 Cals conversion: GR.NOTES should be preserved.

    Change in FormexParser class: GR.NOTES elements can be embedded if the embed_gr_notes options is True.

    Change in the FormexBuilder class: During GR.NOTES extraction, existing GR.NOTES are moved before the CORPUS (or created if missing).

    Change in the convert_formex2cals() function: Add the embed_gr_notes options to allow GR.NOTES element embedding.

  • Fix #11: Cals 2 Formex conversion: missing CORPUS/@width.

    Change in the CalsParser class: Add the width_unit option, and add support for the @cals:width attribute (table width).

  • Fix #12: Cals 2 Formex conversion: missing colspec attributes.

    Change in the FormexBuilder class: Add support for CALS-like attributes: @colnum, @align, @colsep, and @rowsep in the colspec element.

    Change in the CalsBuilder class: The @colsep and @rowsep attributes are generated.

Other

v0.5.0 (2019-09-25)

Minor release

Changed

  • Refactoring (rename “Formex4” to “Formex”):
    • the module benker/builders/formex4.py is renamed benker/builders/formex.py,
    • the module benker/converters/ooxml2formex4.py is renamed benker/converters/ooxml2formex.py,
    • the module benker/parsers/formex4.py is renamed benker/parsers/formex.py,
    • the class Formex4Builder is renamed FormexBuilder,
    • the class Ooxml2Formex4Converter is renamed Ooxml2FormexConverter,
    • the function convert_ooxml2formex4 is renamed convert_ooxml2formex,
    • the class Formex4Parser is renamed FormexParser,
  • Change in the class Table: add the method fill_missing() to fill the missing cells in a table.
  • Change in the class CalsBuilder: Add support for the @cals:rowstyle attribute (extension). The @colnum and @align attributes are generated for the <colspec> element. The new options cals_ns and cals_prefix allow the used of namespaces in CALS. The option tgroup_sorting can be used to sort the thead, tbody and tfoot elements.
  • Change in the method parse_file: Always generate the XML declaration in the destination file.

Added

  • Change in the converter: convert_ooxml2formex(): Add the option use_cals (and related options: cals_ns, cals_prefix and width_unit): This options is used to generate additional CALS-like elements and attributes to simplify the layout of Formex document in typesetting systems.
  • Add support for the Table/Cell shading in the OOXML parser.
  • Add support for bgcolor (Table/Cell background color) in the CALS builder.
  • Add support for bgcolor (Table/Cell background color) in the Formex 4 builder (only with the use_cals option).
  • New parser: CalsParser: CALS tables parser.

Fixed

  • Change in the builder CalsBuilder: the possible values for row/cell nature is “header”, “body” and “footer” (instead of “head”, “body”, “foot”).
  • Fix in the class OoxmlParser: rows with missing cells are filled with empty cells of the same nature as the row.

Other

  • Fix an issue with the AppVeyor build: upgrade setuptools version in appveyor.yml, change the Tox configuration: set py27,py34,py35: pip >= 9.0.3, < 19.2.
  • Change the project‘s slogan: “Easily convert your CALS, HTML, Formex 4, Office Open XML (docx) tables from one format to another.”
  • Change Tox configuration file to test the library with lxml v4.3 on Python 3.4 (support for Python 3.4 was removed in lxml v4.4).
  • Change Tox configuration file to test the library on Python 3.8.
  • Change the Travis CI configuration to build on Python 3.7 and 3.8-dev.

v0.4.3 (unreleased)

Bug fix release

Fixed

  • Fix #5: The title generation should be optional.

    Change in the Formex4Builder class: Add the detect_titles option: if this option is enable, a title will be generated if the first row contains an unique cell with centered text. The detect_titles options is disable by default.

v0.4.2 (2019-06-06)

Bug fix release

Fixed

  • Fix #1: Cell nature should inherit row nature by default.

    Change in the class Styled: The default value of the nature parameter is None (instead of “body”).

    Change in the methods insert_cell() and insert_cell() The nature of a cell is inherited from its parent’s row (or column).

Other

  • Change the requirements for Sphinx: add ‘requests[security]’ for Python 2.7.
  • Fix an issue with the AppVeyor build: change the Tox configuration: set py27,py34,py35: pip >= 9.0.3.

v0.4.1 (2019-04-24)

Bug fix release

Fixed

  • Change in the parser OoxmlParser: fix the ‘x-sect-cols’ value extraction when the w:sectPr is missing (use “1” by default).
  • Fix the Formex 4 builder FormexBuilder: Generate a <IE/> element if the cell content (the string representation) is empty.

v0.4.0 (2019-04-23)

Feature release

Added

  • New converter: convert_ooxml2formex(): Convert Office Open XML (OOXML) tables to Formex 4 tables.
  • New builder: FormexBuilder: Formex 4 builder used to convert tables into TBL elements.
  • Change in the parser OoxmlParser:
    • The section width and height are now stored in the ‘x-sect-size’ table style (units in ‘pt’).
  • Change in the builder BaseBuilder: Add the method finalize_tree(): Give the opportunity to finalize the resulting tree structure.

v0.3.0 (2019-02-16)

Feature release

Added

  • Change in the parser OoxmlParser:
    • Parse cell w:tcPr/w:vAlign values.
    • Parse paragraph alignments to calculate cell horizontal alignments.
    • Parse cell w:tcPr/w:tcBorders values to extract border styles.
  • Change in the builder benker.builders.cals.CalsBuilder:
    • Generate entry/@valign attributes.
    • Generate entry/@align attributes.
    • Generate entry/@colsep and entry/@rowsep attributes.

Changed

v0.2.2 (2018-12-15)

Bug fix release

Added

Fixed

  • Fix the implementation of parse_table(): use a new implementation of lxml.etree.iterwalk if using lxml < 4.2.1.

Other

  • Change Tox configuration file to test the library with lxml v3 and v4.
  • Add a changelog in the documentation.

v0.2.1 (2018-11-27)

Fixed

Other

  • Change link to PyPi project to “https://pypi.org/project/Benker/”.
  • Add the README to the documentation.
  • Add configuration files for TravisCI and AppVeyor.

v0.2.0 (2018-11-26)

Changed

  • Update project configuration
  • Add missing __init__.py file in tests directory: it is required for test modules import.

Fixed

  • Fix unit tests (Python 2.7).
  • Fix flakes8 problems.
  • Fix implementation of the Grid class for Python 2.7 (remove annotation). And minor fixes.
  • Remove pipenv configuration files.
  • Fix project configuration.

v0.1.0 (2018-11-26)

  • First version of Benker.