inline void print_text (std::ostream& os, Description const& d) { using std::endl; os << d.command (); Description::OptionIterator ob = d.begin_option (); Description::OptionIterator oe = d.end_option (); if (ob != oe) { os << " { OPTIONS }"; } Description::ArgumentIterator ab = d.begin_argument (); Description::ArgumentIterator ae = d.end_argument (); for (; ab != ae; ab++) { os << " <" << *ab << ">"; } os << endl << endl; for (; ob != oe; ob++) { bool flag (ob->type () == OptionType::flag); bool optional (ob->optional ()); std::string prefix (ob->name ().length () == 1 ? "-" : "--"); os << (optional ? "[" : "") << prefix << ob->name () << (flag ? "" : " ") << ob->value_synopsis () << (optional ? "]" : "") << endl; os << "\t\t" << ob->description () << endl << endl; } }
inline void print_html (std::ostream& os, Description const& d) { using std::endl; os << "<html>" << endl << "<body>" << endl << "<div align=\"center\">" << endl << "<table width=\"700\" border=\"0\" cellspacing=\"0\" " << "cellpadding=\"0\">" << endl << "<tr>" << endl << "<td>" << endl; os << "<p>" << endl << "<code>" << endl; os << d.command (); Description::OptionIterator ob = d.begin_option (); Description::OptionIterator oe = d.end_option (); if (ob != oe) { os << " { OPTIONS }"; } Description::ArgumentIterator ab = d.begin_argument (); Description::ArgumentIterator ae = d.end_argument (); for (; ab != ae; ab++) { os << " <" << *ab << ">"; } os << endl << "</code>" << endl << "</p>" << endl; os << "<dl>" << endl; for (; ob != oe; ob++) { bool flag (ob->type () == OptionType::flag); bool optional (ob->optional ()); std::string prefix (ob->name ().length () == 1 ? "-" : "--"); os << "<dt>" << endl << "<code>" << endl << (optional ? "[" : "") << prefix << ob->name () << (flag ? "" : " ") << ob->value_synopsis () << (optional ? "]" : "") << endl << "</code>" << endl << "</dt>" << endl; os << "<dd>" << endl << "<p>" << endl << ob->description () << endl << "</p>" << endl << "</dd>" << endl; } os << "</dl>" << endl; os << "</td>" << endl << "</tr>" << endl << "</table>" << endl << "</div>" << endl << "</body>" << endl << "</html>" << endl; }