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 namespace hilti {
9 
10 namespace printer {
11 class Stream;
12 }
13 
15 class DocString {
16 public:
21  const auto& summary() const { return _summary; }
22 
27  const auto& text() const { return _text; }
28 
34  void addSummary(const std::string& line) { _summary.push_back(_normalize(line)); }
35 
41  void addText(const std::string& line) { _text.push_back(_normalize(line)); }
42 
46  void print(std::ostream& out) const;
47 
52  void print(hilti::printer::Stream& out) const;
53 
55  std::string dump() const;
56 
58  explicit operator bool() const { return ! (_summary.empty() && _text.empty()); }
59 
60 private:
61  // Removes any comment prefix from a line.
62  std::string _normalize(const std::string& line) const;
63 
64  std::vector<std::string> _summary;
65  std::vector<std::string> _text;
66 };
67 
68 } // namespace hilti
Definition: doc-string.h:15
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:21
const auto & text() const
Definition: doc-string.h:27
void addText(const std::string &line)
Definition: doc-string.h:41
void addSummary(const std::string &line)
Definition: doc-string.h:34
Definition: printer.h:57