format-helpers.cpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
26 #include "format-helpers.hpp"
27 
28 namespace nfd {
29 namespace tools {
30 namespace nfdc {
31 
32 namespace xml {
33 
34 void
35 printHeader(std::ostream& os)
36 {
37  os << "<?xml version=\"1.0\"?>"
38  << "<nfdStatus xmlns=\"ndn:/localhost/nfd/status/1\">";
39 }
40 
41 void
42 printFooter(std::ostream& os)
43 {
44  os << "</nfdStatus>";
45 }
46 
47 std::ostream&
48 operator<<(std::ostream& os, const Text& text)
49 {
50  for (char ch : text.s) {
51  switch (ch) {
52  case '"':
53  os << "&quot;";
54  break;
55  case '&':
56  os << "&amp;";
57  break;
58  case '\'':
59  os << "&apos;";
60  break;
61  case '<':
62  os << "&lt;";
63  break;
64  case '>':
65  os << "&gt;";
66  break;
67  default:
68  os << ch;
69  break;
70  }
71  }
72  return os;
73 }
74 
75 std::string
76 formatSeconds(time::seconds d)
77 {
78  return "PT" + to_string(d.count()) + "S";
79 }
80 
81 std::string
82 formatTimestamp(time::system_clock::TimePoint t)
83 {
84  return time::toString(t, "%Y-%m-%dT%H:%M:%S%F");
85 }
86 
87 } // namespace xml
88 
89 namespace text {
90 
91 Separator::Separator(const std::string& first, const std::string& subsequent)
92  : m_first(first)
93  , m_subsequent(subsequent)
94  , m_count(0)
95 {
96 }
97 
98 Separator::Separator(const std::string& subsequent)
99  : Separator("", subsequent)
100 {
101 }
102 
103 std::ostream&
104 operator<<(std::ostream& os, Separator& sep)
105 {
106  if (++sep.m_count == 1) {
107  return os << sep.m_first;
108  }
109  return os << sep.m_subsequent;
110 }
111 
112 std::string
113 formatSeconds(time::seconds d, bool isLong)
114 {
115  return to_string(d.count()) + (isLong ? " seconds" : "s");
116 }
117 
118 std::string
119 formatTimestamp(time::system_clock::TimePoint t)
120 {
121  return time::toIsoString(t);
122 }
123 
124 } // namespace text
125 
126 } // namespace nfdc
127 } // namespace tools
128 } // namespace nfd
std::string formatSeconds(time::seconds d, bool isLong)
std::string formatTimestamp(time::system_clock::TimePoint t)
void printHeader(std::ostream &os)
std::ostream & operator<<(std::ostream &os, Separator &sep)
Copyright (c) 2014-2015, Regents of the University of California, Arizona Board of Regents...
Definition: algorithm.hpp:32
std::string formatTimestamp(time::system_clock::TimePoint t)
std::ostream & operator<<(std::ostream &os, const Text &text)
print XML text with special character represented as predefined entities
Separator(const std::string &first, const std::string &subsequent)
std::string formatSeconds(time::seconds d)
print different string on first and subsequent usage
void printFooter(std::ostream &os)