wibble  1.1
doc.h
Go to the documentation of this file.
1 #ifndef WIBBLE_COMMANDLINE_DOC_H
2 #define WIBBLE_COMMANDLINE_DOC_H
3 
5 #include <string>
6 #include <vector>
7 #include <ostream>
8 
9 namespace wibble {
10 namespace commandline {
11 
12 class HelpWriter;
13 
14 class DocMaker
15 {
16 protected:
17  std::string m_app;
18  std::string m_ver;
19 
20 public:
21  DocMaker(const std::string& app, const std::string& ver)
22  : m_app(app), m_ver(ver) {}
23 };
24 
25 class Help : public DocMaker
26 {
27 protected:
28  void outputOptions(std::ostream& out, HelpWriter& writer, const Engine& cp);
29 
30 public:
31  Help(const std::string& app, const std::string& ver)
32  : DocMaker(app, ver) {}
33 
34  void outputVersion(std::ostream& out);
35  void outputHelp(std::ostream& out, const Engine& cp);
36 };
37 
38 class Manpage : public DocMaker
39 {
40 public:
41  enum where { BEFORE, BEGINNING, END };
42 
43 private:
44  struct Hook
45  {
46  std::string section;
47  where placement;
48  std::string text;
49 
50  Hook(const std::string& section, where placement, const std::string& text)
51  : section(section), placement(placement), text(text) {}
52  };
53 
54  int m_section;
55  std::string m_author;
56 
57  std::vector<Hook> hooks;
58  std::string lastSection;
59 
60  void outputParagraph(std::ostream& out, const std::string& str);
61  void outputOption(std::ostream& out, const Option* o);
62  void outputOptions(std::ostream& out, const Engine& p);
63  void runHooks(std::ostream& out, const std::string& section, where where);
64  void startSection(std::ostream& out, const std::string& name);
65  void endSection(std::ostream& out);
66 
67 
68 public:
69  Manpage(const std::string& app, const std::string& ver, int section, const std::string& author)
70  : DocMaker(app, ver), m_section(section), m_author(author) {}
71 
72  void addHook(const std::string& section, where placement, const std::string& text)
73  {
74  hooks.push_back(Hook(section, placement, text));
75  }
76  void readHooks(const std::string& file);
77 
78  void output(std::ostream& out, const Engine& cp);
79 };
80 
81 }
82 }
83 
84 // vim:set ts=4 sw=4:
85 #endif
wibble::commandline::DocMaker::m_ver
std::string m_ver
Definition: doc.h:18
wibble::commandline::Help
Definition: doc.h:25
wibble::commandline::Engine::name
const std::string & name() const
Definition: engine.h:107
wibble::commandline::Manpage
Definition: doc.h:38
wibble::commandline::Manpage::output
void output(std::ostream &out, const Engine &cp)
Definition: doc.cpp:326
wibble::commandline::Manpage::END
@ END
Definition: doc.h:41
wibble::commandline::Engine::groups
const std::vector< OptionGroup * > & groups() const
Get the OptionGroups that have been added to this engine.
Definition: engine.h:191
wibble::commandline::Manpage::readHooks
void readHooks(const std::string &file)
Definition: doc.cpp:409
wordwrap.h
wibble::commandline::DocMaker
Definition: doc.h:14
wibble::commandline::Engine::longDescription
std::string longDescription
Definition: engine.h:224
wibble::commandline::Engine::hasOptions
bool hasOptions() const
Returns true if this Engine has options to parse.
Definition: engine.h:209
wibble::commandline::Manpage::Manpage
Manpage(const std::string &app, const std::string &ver, int section, const std::string &author)
Definition: doc.h:69
wibble::commandline::Engine::usage
std::string usage
Definition: engine.h:222
wibble::commandline::Engine::aliases
std::vector< std::string > aliases
Definition: engine.h:221
wibble::commandline::Engine::primaryAlias
std::string primaryAlias
Definition: engine.h:220
wibble::commandline::Engine::options
const std::vector< Option * > & options() const
Get the Options that have been added to this engine.
Definition: engine.h:194
wibble::commandline::Manpage::BEGINNING
@ BEGINNING
Definition: doc.h:41
wibble::list::output
void output(List l, Out it)
Definition: list.h:415
wibble::commandline::Help::outputHelp
void outputHelp(std::ostream &out, const Engine &cp)
Definition: doc.cpp:145
wibble::commandline::Engine::commands
const std::vector< Engine * > & commands() const
Get the Engines that have been added to this engine.
Definition: engine.h:197
wibble::commandline::Engine
Parse commandline options.
Definition: engine.h:38
wibble::commandline::DocMaker::m_app
std::string m_app
Definition: doc.h:17
wibble::commandline::Manpage::where
where
Definition: doc.h:41
wibble::commandline::Manpage::BEFORE
@ BEFORE
Definition: doc.h:41
wibble::commandline::Engine::description
std::string description
Definition: engine.h:223
parser.h
wibble::sys::fs::size
size_t size(const std::string &file)
File size.
Definition: fs.cpp:287
wibble::commandline::Manpage::addHook
void addHook(const std::string &section, where placement, const std::string &text)
Definition: doc.h:72
wibble
Definition: amorph.h:17
wibble::commandline::Help::outputVersion
void outputVersion(std::ostream &out)
Definition: doc.cpp:140
file
file(GLOB TEST_SOURCES test_ *.cpp) ADD_CUSTOM_TARGET(check COMMAND make libwibble-test &&$
Definition: tests/CMakeLists.txt:3
doc.h
wibble::commandline::DocMaker::DocMaker
DocMaker(const std::string &app, const std::string &ver)
Definition: doc.h:21
wibble::commandline::Help::outputOptions
void outputOptions(std::ostream &out, HelpWriter &writer, const Engine &cp)
Definition: doc.cpp:77
wibble::exception::Consistency
Exception thrown when some consistency check fails.
Definition: exception.h:254
wibble::grcal::date::now
void now(int *dst)
Fill in an int[6] with the UTC values for now.
wibble::exception::File
Base class for exceptions for file I/O.
Definition: exception.h:420
wibble::commandline::Help::Help
Help(const std::string &app, const std::string &ver)
Definition: doc.h:31