]> git.llucax.com Git - software/bife/bife++.git/blob - translate.cpp
d3bb41bfc51b59df631598285c06e5e586af9aac
[software/bife/bife++.git] / translate.cpp
1 // vim: set expandtab tabstop=4 shiftwidth=4:
2
3 #include "translate.h"
4 #include <sstream>
5
6 using std::stringstream;
7 using namespace bife;
8
9 #ifdef DEBUG
10 #include <iostream>
11 using std::cerr;
12 using std::endl;
13 #endif
14
15 Translate::Translate(const string& name): Fallback(name) {
16 #ifdef DEBUG
17     cerr << "In Translate::Translate(name = '" << name << "');" << endl;
18 #endif
19 }
20
21 Translate::Translate(const string& name, const Hash& attrs): Fallback(name, attrs) {
22 #ifdef DEBUG
23     cerr << "In Translate::Translate(name = '" << name
24         << "', attrs = {" /* TODO << attrs */ << "});" << endl;
25 #endif
26 }
27
28 Translate::Translate(const string& name, const Hash& attrs, Widget& content):
29         Fallback(name, attrs, content) {
30     // FIXME - this->content.push_back(content);
31 #ifdef DEBUG
32     cerr << "In Translate::Translate(name = '" << name
33         << "', attrs = {" /* TODO << attrs */
34         << "}, content = {" /* TODO << content */ << "});" << endl;
35 #endif
36 }
37
38 Translate::Translate(const string& name, Widget& content, const Hash& attrs):
39         Fallback(name, content, attrs) {
40     // FIXME - this->content.push_back(content);
41 #ifdef DEBUG
42     cerr << "In Translate::Translate(name = '" << name
43         << "', content = {" /* TODO << content */
44         << "}, attrs = {" /* TODO << attrs */ << "});" << endl;
45 #endif
46 }
47
48 Translate::~Translate(void) {
49 #ifdef DEBUG
50     cerr << "In Translate destructor." << endl;
51 #endif
52 }
53
54 string Translate::render(HIT& tpl) {
55     stringstream out;
56     if (false /* TODO tpl.exists(name, '')*/) {
57         Hash a = attrs;
58         a["CONTENT"] = renderContent(tpl);
59         out << tpl.parse(name, attrs /* TODO ,"", "" */);
60     } else {
61         out << "<" << name;
62         for (Hash::iterator i = attrs.begin(); i != attrs.end(); i++) {
63             out << " " << i->first << "=\"" << i->second << "\"";
64         }
65         string c = renderContent(tpl);
66         if (c.empty()) {
67             out << " />";
68         } else {
69             out << ">" << c << "</" << name << ">";
70         }
71     }
72     return out.str();
73 }
74