some update
parent
8b03dda1fe
commit
7129c929eb
|
@ -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.24)
|
set(BLT_VERSION 4.0.25)
|
||||||
|
|
||||||
set(BLT_TARGET BLT)
|
set(BLT_TARGET BLT)
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,45 @@ namespace blt::argparse
|
||||||
return std::vector<std::string_view>{"./program", strings...};
|
return std::vector<std::string_view>{"./program", strings...};
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
class printer_mark_t
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void reset()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void next()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
printer_mark_t& operator+=(T&& t)
|
||||||
|
{
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class aligned_printer_t
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit aligned_printer_t(const size_t max_line_size = 60, const size_t spaces_per_tab = 4): max_line_size(max_line_size),
|
||||||
|
spaces_per_tab(spaces_per_tab)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string buffer;
|
||||||
|
size_t last_newline = 0;
|
||||||
|
size_t max_line_size;
|
||||||
|
size_t spaces_per_tab;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
void add(std::string& out, T&& value, size_t line_size = 60)
|
void add(std::string& out, T&& value, size_t line_size = 60)
|
||||||
{
|
{
|
||||||
const auto lines = string::split(out, '\n');
|
const auto lines = string::split(out, '\n');
|
||||||
|
@ -243,7 +281,8 @@ namespace blt::argparse
|
||||||
singleFlags[arg.get_flag()].emplace_back(arg.get_name());
|
singleFlags[arg.get_flag()].emplace_back(arg.get_name());
|
||||||
else
|
else
|
||||||
compoundFlags.emplace_back(arg, value);
|
compoundFlags.emplace_back(arg, value);
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
compoundFlags.emplace_back(arg, value);
|
compoundFlags.emplace_back(arg, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,15 +308,18 @@ namespace blt::argparse
|
||||||
add(usage, " ");
|
add(usage, " ");
|
||||||
add(usage, builder->m_metavar.value_or(string::toUpperCase(name.get_name())));
|
add(usage, builder->m_metavar.value_or(string::toUpperCase(name.get_name())));
|
||||||
};
|
};
|
||||||
std::visit(lambda_visitor{[&](const nargs_t)
|
std::visit(lambda_visitor{
|
||||||
{
|
[&](const nargs_t)
|
||||||
lambda();
|
{
|
||||||
}, [&](const int argc)
|
lambda();
|
||||||
{
|
},
|
||||||
if (argc == 0)
|
[&](const int argc)
|
||||||
return;
|
{
|
||||||
lambda();
|
if (argc == 0)
|
||||||
}}, builder->m_nargs);
|
return;
|
||||||
|
lambda();
|
||||||
|
}
|
||||||
|
}, builder->m_nargs);
|
||||||
add(usage, "]");
|
add(usage, "]");
|
||||||
if (i != compoundFlags.size() - 1)
|
if (i != compoundFlags.size() - 1)
|
||||||
add(usage, " ");
|
add(usage, " ");
|
||||||
|
@ -1153,7 +1195,8 @@ namespace blt::argparse
|
||||||
{
|
{
|
||||||
parser.parse(a6);
|
parser.parse(a6);
|
||||||
BLT_ASSERT(false && "Subparser should throw an error when first positional is not a valid subparser");
|
BLT_ASSERT(false && "Subparser should throw an error when first positional is not a valid subparser");
|
||||||
} catch (const std::exception&)
|
}
|
||||||
|
catch (const std::exception&)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue