void HelpWriterContext::writeOptionItem(const std::string &name, const std::string &value, const std::string &defaultValue, const std::string &info, const std::string &description) const { TextWriter &file = outputFile(); switch (outputFormat()) { case eHelpOutputFormat_Console: { TextTableFormatter &formatter(impl_->state_->consoleOptionsFormatter()); formatter.clear(); formatter.addColumnLine(0, name); formatter.addColumnLine(1, value); if (!defaultValue.empty()) { formatter.addColumnLine(2, "(" + defaultValue + ")"); } if (!info.empty()) { formatter.addColumnLine(3, "(" + info + ")"); } TextLineWrapperSettings settings; settings.setIndent(11); settings.setLineLength(78); std::string formattedDescription = substituteMarkupAndWrapToString(settings, description); file.writeLine(formatter.formatRow()); file.writeLine(formattedDescription); break; } case eHelpOutputFormat_Rst: { std::string args(value); if (!defaultValue.empty()) { args.append(" ("); args.append(defaultValue); args.append(")"); } if (!info.empty()) { args.append(" ("); args.append(info); args.append(")"); } file.writeLine(formatString("``%s`` %s", name.c_str(), args.c_str())); TextLineWrapperSettings settings; settings.setIndent(4); file.writeLine(substituteMarkupAndWrapToString(settings, description)); break; } default: GMX_THROW(NotImplementedError( "This output format is not implemented")); } }
void HelpWriterContext::writeOptionItem(const std::string &name, const std::string &args, const std::string &description) const { File &file = outputFile(); switch (outputFormat()) { case eHelpOutputFormat_Console: // TODO: Generalize this when there is need for it; the current, // special implementation is in CommandLineHelpWriter. GMX_THROW(NotImplementedError("Option item formatting for console output not implemented")); break; case eHelpOutputFormat_Man: file.writeLine(formatString(".BI \"\\%s\" \" %s\"", name.c_str(), args.c_str())); file.writeString(" "); writeTextBlock(description); file.writeLine(); break; case eHelpOutputFormat_Html: { std::string substArgs = substituteMarkupAndWrapToString(TextLineWrapperSettings(), args); file.writeLine(formatString("<dt><b><tt>%s</tt></b> %s</dt>", name.c_str(), substArgs.c_str())); file.writeLine("<dd>"); writeTextBlock(description); file.writeLine("</dd>"); break; } default: GMX_THROW(NotImplementedError( "This output format is not implemented")); } }
void HelpWriterContext::writeTextBlock(const std::string &text) const { TextLineWrapperSettings settings; if (outputFormat() == eHelpOutputFormat_Console) { settings.setLineLength(78); } outputFile().writeLine(substituteMarkupAndWrapToString(settings, text)); }