more help
parent
fc27d7503a
commit
1b6d23fad4
|
@ -1,6 +1,6 @@
|
||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
include(cmake/color.cmake)
|
include(cmake/color.cmake)
|
||||||
set(BLT_VERSION 4.0.27)
|
set(BLT_VERSION 4.0.28)
|
||||||
|
|
||||||
set(BLT_TARGET BLT)
|
set(BLT_TARGET BLT)
|
||||||
|
|
||||||
|
|
|
@ -186,13 +186,16 @@ namespace blt::argparse
|
||||||
size_t aligned_size = 0;
|
size_t aligned_size = 0;
|
||||||
for (const auto& v : iterate(buffer).skip(start_index).take(take))
|
for (const auto& v : iterate(buffer).skip(start_index).take(take))
|
||||||
{
|
{
|
||||||
aligned_size = std::max(aligned_size, v.size());
|
auto size = static_cast<i64>(v.size());
|
||||||
|
for (; size > 0 && std::isblank(v[size - 1]); size--)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
aligned_size = std::max(aligned_size, static_cast<size_t>(size));
|
||||||
}
|
}
|
||||||
|
const auto offset_size = aligned_size + spaces_between;
|
||||||
|
|
||||||
for (auto& v : iterate(buffer).skip(start_index).take(take))
|
for (auto& v : iterate(buffer).skip(start_index).take(take))
|
||||||
{
|
{
|
||||||
auto offset_size = aligned_size + spaces_between;
|
|
||||||
|
|
||||||
for (size_t i = v.size(); i < offset_size; i++)
|
for (size_t i = v.size(); i < offset_size; i++)
|
||||||
v += ' ';
|
v += ' ';
|
||||||
}
|
}
|
||||||
|
@ -456,6 +459,35 @@ namespace blt::argparse
|
||||||
auto& [builder, flag_list] = pair;
|
auto& [builder, flag_list] = pair;
|
||||||
str += builder->m_help.value_or("");
|
str += builder->m_help.value_or("");
|
||||||
}
|
}
|
||||||
|
mark.align(4);
|
||||||
|
for (auto [str, pair] : mark.iter().zip(same_flags))
|
||||||
|
{
|
||||||
|
auto& [builder, flag_list] = pair;
|
||||||
|
if (builder->m_default_value)
|
||||||
|
{
|
||||||
|
str += "(Default: ";
|
||||||
|
std::visit(detail::arg_meta_type_helper_t::make_visitor(
|
||||||
|
[&](auto& value)
|
||||||
|
{
|
||||||
|
str += value;
|
||||||
|
},
|
||||||
|
[&](auto& vec)
|
||||||
|
{
|
||||||
|
if constexpr (!std::is_same_v<std::decay_t<meta::remove_cvref_t<decltype(vec)>>, std::vector<bool>>)
|
||||||
|
{
|
||||||
|
str += '[';
|
||||||
|
for (const auto& [i, v] : enumerate(vec))
|
||||||
|
{
|
||||||
|
str += v;
|
||||||
|
if (i != vec.size() - 1)
|
||||||
|
str += ", ";
|
||||||
|
}
|
||||||
|
str += ']';
|
||||||
|
}
|
||||||
|
}), *builder->m_default_value);
|
||||||
|
str += ")";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << help.str() << std::endl;
|
std::cout << help.str() << std::endl;
|
||||||
|
@ -500,7 +532,7 @@ namespace blt::argparse
|
||||||
for (const auto& [i, kv] : enumerate(compoundFlags))
|
for (const auto& [i, kv] : enumerate(compoundFlags))
|
||||||
{
|
{
|
||||||
const auto& [name, builder] = kv;
|
const auto& [name, builder] = kv;
|
||||||
aligner += '[';
|
aligner += builder->m_required ? '<' : '[';
|
||||||
aligner += name.get_argument();
|
aligner += name.get_argument();
|
||||||
auto lambda = [&]()
|
auto lambda = [&]()
|
||||||
{
|
{
|
||||||
|
@ -527,7 +559,7 @@ namespace blt::argparse
|
||||||
lambda();
|
lambda();
|
||||||
}
|
}
|
||||||
}, builder->m_nargs);
|
}, builder->m_nargs);
|
||||||
aligner += ']';
|
aligner += builder->m_required ? '>' : ']';
|
||||||
aligner += ' ';
|
aligner += ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue