summaryrefslogtreecommitdiff
path: root/cli/cli/txt.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'cli/cli/txt.hxx')
-rw-r--r--cli/cli/txt.hxx46
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