The template was u"-v;v;%1"_s but it's fixed in the latest pwsh, so
used -v. I don't know when it was fixed. I will not create conditional
code branch for this.
- removed comment
This commit can't be divided because everything is related.
The tabulate/table.hpp #include is too expensive to compile and it was
included everywhere and it also was exposed to the client code.
Whole code was refactored to move this header into the .cpp files.
The InteractsWithIO was also hidden in similar way, forward declared
in the TomApplication, used std::unique_ptr<>, and #include moved
to the .cpp file.
The InteractsWithIO is now private because it's fully initialized after
the TomApplication::run() method call and it would need more work.
The next change is in the InteractsWithIO::table() method, the values
passed to it aren't tabulate::Table::Row_t anymore (for header and body
rows), but are are own types. The reason for this was to get rid of
the Tabulate version number checks and based on these version checks
define the correct Tabulate row/cell types. Now, when this type will
change in the future it will not cause any problems.
These our new table row/cell values/types are internally converted
to the tabulate::Table::Row_t type.
The last change was to extract the formatting code for the Tabulate
table into the StatusCommand. These formatting code/rules were directly
defined in the InteractsWithIO::table() method and that was a bug.
I have added the FormatTableCallback that can be passed to this InteractsWithIO::table() method that allows to format Tabulate table.
- updated all InteractsWithIO method calls through the io() getter
- moved the Application::~Application() to the .cpp file (non-inline)
- exposed the isAnsiW/Output() methods (made public)
- removed the InteractsWithIO() constructor and
initialize(const QCommandLineParser &) methods
- moved the Tabulate table formatting logic to the StatusCommand
- removed Tabulate version checks thx to our own types