/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#include "base/polygraph.h"
#include "xstd/h/iostream.h"
#include "xml/XmlAttr.h"
#include "loganalyzers/Formatter.h"
inline const String &attr(const String &value) { return value; }
inline const String &text(const String &value) { return value; }
WebPageFormatter::WebPageFormatter(ostream *aPage): thePage(aPage) {
}
void WebPageFormatter::openSection(const String &id, const String &title) {
*thePage << "<div class=\"section\" id=\"" << attr(id) << "\">" << endl;
*thePage << "<h2>" << text(title) << "</h2>" << endl;
}
void WebPageFormatter::closeSection() {
*thePage << "</div>" << endl;
}
void WebPageFormatter::openTable(const String &id, const String &title) {
*thePage << "<table id=\"" << attr(id) << "\" " <<
"border=\"1\" cellspacing=\"0\" cellpadding=\"3\">" << endl;
*thePage << "<tr class=\"title\"><th colspan=\"2\">" << text(title) <<
"</th></tr>" << endl;
}
void WebPageFormatter::openTableAnonym() {
*thePage << "<table " <<
"border=\"0\" cellspacing=\"0\" cellpadding=\"3\">" << endl;
}
void WebPageFormatter::closeTable() {
*thePage << "</table>" << endl;
}
void WebPageFormatter::openTableHeader(const String &id, const String &title) {
*thePage << "<tr class=\"header\">" << endl;
}
void WebPageFormatter::closeTableHeader() {
*thePage << "</tr>" << endl;
}
void WebPageFormatter::openTableRecord() {
*thePage << "<tr>" << endl;
}
void WebPageFormatter::closeTableRecord() {
*thePage << "</tr>" << endl;
}
void WebPageFormatter::openTableCell(const String &classId) {
*thePage << "<td";
if (classId.len() > 0)
XmlAttr("class", classId).print(*thePage, " ");
*thePage << ">";
}
void WebPageFormatter::closeTableCell() {
*thePage << "</td>";
}
void WebPageFormatter::addTableCell(const String &cell) {
openTableCell("");
addText(cell);
closeTableCell();
}
void WebPageFormatter::addLink(const String &addr, const String &text) {
*thePage << "<a";
XmlAttr("href", addr).print(*thePage, " ");
*thePage << ">";
addText(text);
*thePage << "</a>";
}
void WebPageFormatter::addText(const String &text) {
*thePage << text;
}
void WebPageFormatter::addInteger(int v, const String &unit, bool addSign) {
if (addSign && v >= 0)
addText(v > 0 ? "+" : " ");
*thePage << v << unit;
}
void WebPageFormatter::addNothing() {
*thePage << " ";
}
void WebPageFormatter::make() {
Assert(thePage);
}
syntax highlighted by Code2HTML, v. 0.9.1