diff options
Diffstat (limited to 'cli/cli/txt.hxx')
-rw-r--r-- | cli/cli/txt.hxx | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/cli/cli/txt.hxx b/cli/cli/txt.hxx new file mode 100644 index 0000000..cde31c9 --- /dev/null +++ b/cli/cli/txt.hxx @@ -0,0 +1,46 @@ +// file : cli/txt.hxx +// author : Boris Kolpackov <boris@codesynthesis.com> +// license : MIT; see accompanying LICENSE file + +#ifndef CLI_TXT_HXX +#define CLI_TXT_HXX + +#include <iosfwd> // ostream +#include <string> +#include <cstddef> // size_t + +#include <cli/context.hxx> + +void +generate_txt (context&); + +// Return the number of "text characters", ignoring any escape sequences +// (e.g., ANSI color). +// +std::size_t +txt_size (const std::string&, + std::size_t p = 0, + std::size_t n = std::string::npos); + +// This function assumes that the initial opening part has already been +// written with the 'first' argument being the number of characters already +// written in the first line (e.g., an option name). The 'indent' argument +// specified how many spaces to indent each line. The 'escape' argument is +// the optional escape function (e.g., for the string literal output). The +// line_{start, end, blank} arguments specify optional extra text for the +// start/end of the non-empty line as well as for the blank (empty) line. +// +// Note that the funtion modifies the passed string in order to translate +// notes. +// +void +txt_wrap_lines (std::ostream& os, + std::string&, + std::size_t indent = 0, + std::size_t first = 0, + const char* line_start = "", + const char* line_end = "", + const char* line_blank = "", + std::string (*escape) (std::string const&) = 0); + +#endif // CLI_TXT_HXX |