mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2024-10-30 16:07:38 +08:00
Table: support initializer list constructor. (#915)
Some checks failed
Build / Tests (gcc, gcov, Linux GCC, ubuntu-latest) (push) Failing after 9m27s
Build / Tests (llvm, llvm-cov gcov, Linux Clang, ubuntu-latest) (push) Failing after 6s
Build / documentation (push) Failing after 5s
CodeQL / Analyze (cpp) (push) Failing after 24s
Build / Tests (cl, Windows MSVC, windows-latest) (push) Has been cancelled
Build / Tests (llvm, llvm-cov gcov, MacOS clang, macos-latest) (push) Has been cancelled
Build / Create release (push) Has been cancelled
Build / Build packages (build/ftxui*Darwin*, macos-latest) (push) Has been cancelled
Build / Build packages (build/ftxui*Linux*, ubuntu-latest) (push) Has been cancelled
Build / Build packages (build/ftxui*Win64*, windows-latest) (push) Has been cancelled
Some checks failed
Build / Tests (gcc, gcov, Linux GCC, ubuntu-latest) (push) Failing after 9m27s
Build / Tests (llvm, llvm-cov gcov, Linux Clang, ubuntu-latest) (push) Failing after 6s
Build / documentation (push) Failing after 5s
CodeQL / Analyze (cpp) (push) Failing after 24s
Build / Tests (cl, Windows MSVC, windows-latest) (push) Has been cancelled
Build / Tests (llvm, llvm-cov gcov, MacOS clang, macos-latest) (push) Has been cancelled
Build / Create release (push) Has been cancelled
Build / Build packages (build/ftxui*Darwin*, macos-latest) (push) Has been cancelled
Build / Build packages (build/ftxui*Linux*, ubuntu-latest) (push) Has been cancelled
Build / Build packages (build/ftxui*Win64*, windows-latest) (push) Has been cancelled
To avoid burdening the user with explicit type construction when using the library, we can use a constructor that accepts an initializer list (std::initializer_list). This allows users to pass initializer lists directly without having to wrap them in std::vector<std::vector<std::string>>. This resolves the ambiguous case when the inner list contains only two elements. Bug:https://github.com/ArthurSonzogni/FTXUI/issues/912
This commit is contained in:
parent
d7de24cd9e
commit
fcd050c017
@ -38,6 +38,7 @@ class Table {
|
||||
Table();
|
||||
explicit Table(std::vector<std::vector<std::string>>);
|
||||
explicit Table(std::vector<std::vector<Element>>);
|
||||
Table(std::initializer_list<std::vector<std::string>> init);
|
||||
TableSelection SelectAll();
|
||||
TableSelection SelectCell(int column, int row);
|
||||
TableSelection SelectRow(int row_index);
|
||||
|
@ -71,6 +71,22 @@ Table::Table(std::vector<std::vector<Element>> input) {
|
||||
Initialize(std::move(input));
|
||||
}
|
||||
|
||||
// @brief Create a table from a list of list of string.
|
||||
// @param init The input data.
|
||||
// @ingroup dom
|
||||
Table::Table(std::initializer_list<std::vector<std::string>> init) {
|
||||
std::vector<std::vector<Element>> input;
|
||||
for (const auto& row : init) {
|
||||
std::vector<Element> output_row;
|
||||
output_row.reserve(row.size());
|
||||
for (const auto& cell : row) {
|
||||
output_row.push_back(text(cell));
|
||||
}
|
||||
input.push_back(std::move(output_row));
|
||||
}
|
||||
Initialize(std::move(input));
|
||||
}
|
||||
|
||||
// private
|
||||
void Table::Initialize(std::vector<std::vector<Element>> input) {
|
||||
input_dim_y_ = static_cast<int>(input.size());
|
||||
|
@ -733,5 +733,17 @@ TEST(TableTest, Merge) {
|
||||
screen.ToString());
|
||||
}
|
||||
|
||||
TEST(TableTest, Issue912) {
|
||||
Table({
|
||||
{"a"},
|
||||
});
|
||||
Table({
|
||||
{"a", "b"},
|
||||
});
|
||||
Table({
|
||||
{"a", "b", "c"},
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace ftxui
|
||||
// NOLINTEND
|
||||
|
Loading…
Reference in New Issue
Block a user