/*******************************************************************************
* BHtml HTML Generation classes
* T.Barnaby, BEAM Ltd, 2006-09-03
*******************************************************************************
*/
#include <BHtml.h>
BHtml::BHtml(BString tag, BString args, BString text){
this->tag = tag;
this->args = args;
if(text != "")
this->appendText(text);
}
BHtml::~BHtml(){
}
BHtml* BHtml::append(BHtml node){
nodes.append(node);
return &nodes.rear();
}
BHtml* BHtml::append(BString tag, BString args, BString text){
nodes.append(BHtml(tag, args, text));
return &nodes.rear();
}
BHtml* BHtml::appendText(BString text){
nodes.append(BHtml("", text));
return &nodes.rear();
}
BString BHtml::render(){
BString str;
BIter i;
if(tag == ""){
str = str + args;
}
else {
if(args != ""){
str = str + "<" + tag + " " + args + ">";
}
else {
str = str + "<" + tag + ">";
}
if((tag == "html") || (tag == "body") || (tag == "table")){
str = str + "\n";
}
for(nodes.start(i); !nodes.isEnd(i); nodes.next(i)){
str = str + nodes[i].render();
}
str = str + "</" + tag + ">";
if((tag == "html") || (tag == "body") || (tag == "tr") || (tag == "table")){
str = str + "\n";
}
}
return str;
}
#ifdef ZAP
int main(int argc, char **argv){
BHtml b("body");
BHtml* t;
BHtml* r;
b.append(BHtml("h1", "", "Hi There"));
t = b.append(BHtml("table"));
r = t->append(BHtml("tr"));
r->append(BHtml("td", "", "Col0"));
r->append(BHtml("td", "", "Col1"));
r->append(BHtml("td", "", "Col2"));
r->append("td", "", "Col3");
r = t->append(BHtml("tr"));
r->append(BHtml("td", "", "Col0"));
r->append(BHtml("td", "", "Col1"));
r->append(BHtml("td", "", "Col2"));
r->append("td", "", "Col3");
printf("%s\n", b.render().retStr());
return 0;
}
#endif