Spicy
doc-string.h
1 // Copyright (c) 2020-2021 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 render(std::ostream& out) const;
47 
52  void render(printer::Stream& out) const;
53 
55  explicit operator bool() const { return ! (_summary.empty() && _text.empty()); }
56 
57 private:
58  // Removes any comment prefix from a line.
59  std::string normalize(std::string line) const;
60 
61  std::vector<std::string> _summary;
62  std::vector<std::string> _text;
63 };
64 
65 } // namespace hilti
const auto & summary() const
Definition: doc-string.h:21
Definition: printer.h:16
Definition: doc-string.h:15
void addSummary(const std::string &line)
Definition: doc-string.h:34
const auto & text() const
Definition: doc-string.h:27
void addText(const std::string &line)
Definition: doc-string.h:41