Hi!
Finally, I’ve completed the first release of PrettyTables.jl version 3! For anyone using this package, we can assume that everything in the API has changed (sorry about that :D). However, these breaking changes have very good reasons.
We now adhere to the table structure defined in R’s package GT. This results in a more coherent table design and a plethora of additional features, such as merging column labels (headers), adding summary rows, adding footnotes, and many more!
Since I am not a native English speaker, the keyword naming was previously inconsistent. I’ve taken great care to ensure coherence now. While the keyword names may be lengthy, they are highly meaningful.
We’ve introduced a true markdown backend, enhancing the package’s functionality.
The package has significantly improved its speed.
The internal structure has been streamlined, introducing a centralized printing state iterator. This simplifies the process of adding new backends, as each backend no longer needs to iterate through the table sections individually.
If anyone want a quick example, try this:
julia> matrix = [(i, j) for i in 1:3, j in 1:3];
julia> pretty_table(
matrix;
column_labels = [["Col. 1", MultiColumn(2, "Merged Column")], ["$i" for i in 1:3]],
footnotes = [(:column_label, 1, 2) => "Footnote in column label", (:data, 2, 2) => "Footnote in data"],
row_group_labels = [2 => "Row Group"],
row_labels = ["Row $i" for i in 1:5],
show_row_number_column = true,
source_notes = "Source Notes",
stubhead_label = "Rows",
subtitle = "Table Subtitle",
summary_rows = [(data, i) -> 10i, (data, i) -> 20i],
title = "Table Title",
)
Please, expect some bugs and issues. If you find one, I appreciate if you can open a ticket in github!
In the coming days, I will submit a pull request to DataFrames.jl (@bkamins) to use the new version. In this case, it will have the same output, with minor improvements in edge cases. However, after the initial merge, we can begin incorporating the new features from PrettyTables.jl to enhance the output of DataFrames.jl.