#ifndef HTML_BUILDER_H
#define HTML_BUILDER_H
#include "core/string.h"
class Request;
class HTMLBuilder;
class HTMLTag {
public:
bool simple;
String result;
HTMLTag *str(const String &str);
HTMLTag *style(const String &val);
HTMLTag *href(const String &val);
HTMLTag *cls(const String &val);
HTMLTag *id(const String &val);
HTMLTag *name(const String &val);
HTMLTag *content(const String &val);
HTMLTag *value(const String &val);
HTMLTag *method(const String &val);
HTMLTag *type(const String &val);
HTMLTag *placeholder(const String &val);
HTMLTag *rel(const String &val);
HTMLTag *rel_stylesheet();
HTMLTag *charset(const String &val);
HTMLTag *charset_utf_8();
HTMLTag *attrib(const String &attr, const String &val);
HTMLTag *start(const String &p_new_tag, const bool p_simple = false);
HTMLTag *reset();
HTMLTag *close();
HTMLBuilder *f();
bool has_data();
HTMLTag();
HTMLBuilder *owner;
};
class HTMLBuilder {
public:
String result;
HTMLBuilder *comment(const String &val);
HTMLTag *doctype();
HTMLBuilder *doctype(const String &val);
HTMLTag *a();
HTMLTag *abbr();
HTMLTag *acronym(); //Not supported in HTML5.
HTMLTag *address();
HTMLTag *applet(); //Not supported in HTML5.
HTMLTag *area();
HTMLTag *article();
HTMLTag *aside();
HTMLTag *audio();
HTMLTag *b();
HTMLTag *basefont(); //Not supported in HTML5.
HTMLTag *bdi();
HTMLTag *bdo();
HTMLTag *big(); //Not supported in HTML5.
HTMLTag *blockquote();
HTMLTag *body();
HTMLTag *br();
HTMLTag *button();
HTMLTag *canvas();
HTMLTag *caption();
HTMLTag *center(); //Not supported in HTML5.
HTMLTag *cite();
HTMLTag *code();
HTMLTag *col();
HTMLTag *colgroup();
HTMLTag *data();
HTMLTag *datalist();
HTMLTag *dd();
HTMLTag *del();
HTMLTag *details();
HTMLTag *dfn();
HTMLTag *dialog();
HTMLTag *dir(); // Not supported in HTML5.
HTMLTag *div();
HTMLTag *dl();
HTMLTag *dt();
HTMLTag *em();
HTMLTag *embed();
HTMLTag *fieldset();
HTMLTag *figcaption();
HTMLTag *figure();
HTMLTag *font(); //Not supported in HTML5.
HTMLTag *footer();
HTMLTag *form();
HTMLTag *frame(); //Not supported in HTML5.
HTMLTag *frameset(); //Not supported in HTML5.
HTMLTag *h1();
HTMLTag *h2();
HTMLTag *h3();
HTMLTag *h4();
HTMLTag *h5();
HTMLTag *h6();
HTMLTag *head();
HTMLTag *header();
HTMLTag *hr();
HTMLTag *html();
HTMLTag *i();
HTMLTag *iframe();
HTMLTag *img();
HTMLTag *input();
HTMLTag *ins();
HTMLTag *kbd();
HTMLTag *label();
HTMLTag *legend();
HTMLTag *li();
HTMLTag *link();
HTMLTag *main();
HTMLTag *map();
HTMLTag *mark();
HTMLTag *meta();
HTMLTag *meter();
HTMLTag *nav();
HTMLTag *noframes(); //Not supported in HTML5.
HTMLTag *noscript();
HTMLTag *object();
HTMLTag *ol();
HTMLTag *optgroup();
HTMLTag *option();
HTMLTag *output();
HTMLTag *p();
HTMLTag *param();
HTMLTag *picture();
HTMLTag *pre();
HTMLTag *progress();
HTMLTag *q();
HTMLTag *rp();
HTMLTag *rt();
HTMLTag *ruby();
HTMLTag *s();
HTMLTag *samp();
HTMLTag *script();
HTMLTag *section();
HTMLTag *select();
HTMLTag *small();
HTMLTag *source();
HTMLTag *span();
HTMLTag *strike(); //Not supported in HTML5
HTMLTag *strong();
HTMLTag *style();
HTMLTag *sub();
HTMLTag *summary();
HTMLTag *sup();
HTMLTag *svg();
HTMLTag *table();
HTMLTag *tbody();
HTMLTag *td();
HTMLTag *templateh();
HTMLTag *textarea();
HTMLTag *tfoot();
HTMLTag *th();
HTMLTag *thead();
HTMLTag *time();
HTMLTag *title();
HTMLTag *tr();
HTMLTag *track();
HTMLTag *tt(); //Not supported in HTML5.
HTMLTag *u();
HTMLTag *ul();
HTMLTag *var();
HTMLTag *video();
HTMLTag *wbr();
//closing tags c prefix means close
//Note simple tags should not have these like
//Note that I might have a few that shouldn't be here, those will be removed as I find them
HTMLBuilder *ca();
HTMLBuilder *cabbr();
HTMLBuilder *cacronym();
HTMLBuilder *caddress();
HTMLBuilder *capplet();
HTMLBuilder *carea();
HTMLBuilder *carticle();
HTMLBuilder *caside();
HTMLBuilder *caudio();
HTMLBuilder *cb();
HTMLBuilder *cbasefont();
HTMLBuilder *cbdi();
HTMLBuilder *cbdo();
HTMLBuilder *cbig();
HTMLBuilder *cblockquote();
HTMLBuilder *cbody();
HTMLBuilder *cbutton();
HTMLBuilder *ccanvas();
HTMLBuilder *ccaption();
HTMLBuilder *ccenter();
HTMLBuilder *ccite();
HTMLBuilder *ccode();
HTMLBuilder *ccol();
HTMLBuilder *ccolgroup();
HTMLBuilder *cdata();
HTMLBuilder *cdatalist();
HTMLBuilder *cdd();
HTMLBuilder *cdel();
HTMLBuilder *cdetails();
HTMLBuilder *cdfn();
HTMLBuilder *cdialog();
HTMLBuilder *cdir();
HTMLBuilder *cdiv();
HTMLBuilder *cdl();
HTMLBuilder *cdt();
HTMLBuilder *cem();
HTMLBuilder *cembed();
HTMLBuilder *cfieldset();
HTMLBuilder *cfigcaption();
HTMLBuilder *cfigure();
HTMLBuilder *cfont();
HTMLBuilder *cfooter();
HTMLBuilder *cform();
HTMLBuilder *cframe();
HTMLBuilder *cframeset();
HTMLBuilder *ch1();
HTMLBuilder *ch2();
HTMLBuilder *ch3();
HTMLBuilder *ch4();
HTMLBuilder *ch5();
HTMLBuilder *ch6();
HTMLBuilder *chead();
HTMLBuilder *cheader();
HTMLBuilder *chr();
HTMLBuilder *chtml();
HTMLBuilder *ci();
HTMLBuilder *ciframe();
HTMLBuilder *cimg();
HTMLBuilder *cinput();
HTMLBuilder *cins();
HTMLBuilder *ckbd();
HTMLBuilder *clabel();
HTMLBuilder *clegend();
HTMLBuilder *cli();
HTMLBuilder *clink();
HTMLBuilder *cmain();
HTMLBuilder *cmap();
HTMLBuilder *cmark();
HTMLBuilder *cmeta();
HTMLBuilder *cmeter();
HTMLBuilder *cnav();
HTMLBuilder *cnoframes();
HTMLBuilder *cnoscript();
HTMLBuilder *cobject();
HTMLBuilder *c_ol();
HTMLBuilder *coptgroup();
HTMLBuilder *coption();
HTMLBuilder *coutput();
HTMLBuilder *cp();
HTMLBuilder *cparam();
HTMLBuilder *cpicture();
HTMLBuilder *cpre();
HTMLBuilder *cprogress();
HTMLBuilder *cq();
HTMLBuilder *crp();
HTMLBuilder *crt();
HTMLBuilder *cruby();
HTMLBuilder *cs();
HTMLBuilder *csamp();
HTMLBuilder *cscript();
HTMLBuilder *csection();
HTMLBuilder *cselect();
HTMLBuilder *csmall();
HTMLBuilder *csource();
HTMLBuilder *cspan();
HTMLBuilder *cstrike();
HTMLBuilder *cstrong();
HTMLBuilder *cstyle();
HTMLBuilder *csub();
HTMLBuilder *csummary();
HTMLBuilder *csup();
HTMLBuilder *csvg();
HTMLBuilder *ctable();
HTMLBuilder *ctbody();
HTMLBuilder *ctd();
HTMLBuilder *ctemplateh();
HTMLBuilder *ctextarea();
HTMLBuilder *ctfoot();
HTMLBuilder *cth();
HTMLBuilder *cthead();
HTMLBuilder *ctime();
HTMLBuilder *ctitle();
HTMLBuilder *ctr();
HTMLBuilder *ctrack();
HTMLBuilder *ctt();
HTMLBuilder *cu();
HTMLBuilder *cul();
HTMLBuilder *cvar();
HTMLBuilder *cvideo();
HTMLBuilder *cwbr();
void f();
//write
HTMLBuilder *w(const String &val);
//write_escaped
HTMLBuilder *we(const String &val);
HTMLBuilder *write_tag();
HTMLBuilder();
virtual ~HTMLBuilder();
protected:
HTMLTag tag;
};
#endif