Spicy
doc-string.h
1 // Copyright (c) 2020-now by the Zeek Project. See LICENSE for details.
2 
3 #pragma once
4 
5 #include <string>
6 #include <vector>
7 
8 #include <hilti/compiler/printer.h>
9 
10 namespace hilti {
11 
13 class DocString {
14 public:
19  const auto& summary() const { return _summary; }
20 
25  const auto& text() const { return _text; }
26 
32  void addSummary(const std::string& line) { _summary.push_back(_normalize(line)); }
33 
39  void addText(const std::string& line) { _text.push_back(_normalize(line)); }
40 
44  void print(std::ostream& out) const;
45 
50  void print(hilti::printer::Stream& out) const;
51 
53  std::string dump() const;
54 
56  explicit operator bool() const { return ! (_summary.empty() && _text.empty()); }
57 
58 private:
59  // Removes any comment prefix from a line.
60  std::string _normalize(const std::string& line) const;
61 
62  std::vector<std::string> _summary;
63  std::vector<std::string> _text;
64 };
65 
66 } // namespace hilti
Definition: doc-string.h:13
std::string dump() const
Definition: doc-string.cc:45
void print(std::ostream &out) const
Definition: doc-string.cc:23
const auto & summary() const
Definition: doc-string.h:19
const auto & text() const
Definition: doc-string.h:25
void addText(const std::string &line)
Definition: doc-string.h:39
void addSummary(const std::string &line)
Definition: doc-string.h:32
Definition: printer.h:56