::ParserContext::item_t item_t;
typedef typename item_t::const_iterator iterator_t;
unsigned int header_index;
public:
HtmlRenderer() : header_index(0) {}
~HtmlRenderer() {}
void eval(const string &str){
cout << str;
}
void eval(const typename HtmlRenderer::ParserContext &context){
eval_recursive(context);
}
//AutoLinefeed
void eval(const typename HtmlRenderer::AutoLinefeedContext &context){
iterator_t it = context.begin();
(*it)->eval(*this);
bool previous_is_block((*it)->is_block());
while(++it < context.end()){
bool next_is_block((*it)->is_block());
if(!next_is_block
&& !previous_is_block){cout << "
" << endl;}
(*it)->eval(*this);
previous_is_block = next_is_block;
}
}
//Paragraph
void eval(const typename HtmlRenderer::Paragraph &context){
cout << "";
eval((typename HtmlRenderer::AutoLinefeedContext) context);
//eval_recursive(context); //AutoLinefeedContext::eval(buf);
cout << "
" << endl;
}
//Link
void eval(const typename HtmlRenderer::Link &context){
cout << "eval(*this);
cout << "\">";
context[context.items() > 1 ? 1 : 0]->eval(*this);
cout << "";
}
//Strong
void eval(const typename HtmlRenderer::Strong &context){
cout << "";
eval_recursive(context);
cout << "";
}
//Del
void eval(const typename HtmlRenderer::Del &context){
cout << "";
eval_recursive(context);
cout << "";
}
//UnderLine
void eval(const typename HtmlRenderer::UnderLine &context){
cout << "";
eval_recursive(context);
cout << "";
}
//Header
void eval(const typename HtmlRenderer::Header &context){
cout << "";
cout << "";
eval_recursive(context);
cout << "" << endl;
}
//UList
void eval(const typename HtmlRenderer::UList &context){
cout << "" << endl;
for(iterator_t it = context.begin(); it < context.end(); it++){
cout << "- ";
(*it)->eval(*this);
cout << "
" << endl;
}
cout << "
" << endl;
}
//OList
void eval(const typename HtmlRenderer::OList &context){
cout << "" << endl;
for(iterator_t it = context.begin(); it < context.end(); it++){
cout << "- ";
(*it)->eval(*this);
cout << "
" << endl;
}
cout << "
" << endl;
}
//DList
void eval(const typename HtmlRenderer::DList &context){
cout << "" << endl;
for(iterator_t it = context.begin(); it < context.end(); it++){
cout << "- ";
(*it)->eval(*this);
cout << "
" << endl;
if(it++ == context.end()){cout << "" << endl;}
else{
cout << "- ";
(*it)->eval(*this);
cout << "
" << endl;
}
}
cout << "
" << endl;
}
};
#endif /* __FDOC2HTML__ */