mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2024-11-14 04:57:21 +01:00
Added and implemented a HTML builder.
This commit is contained in:
parent
8d61eca08e
commit
4ea3702768
1456
core/html_builder.cpp
Normal file
1456
core/html_builder.cpp
Normal file
File diff suppressed because it is too large
Load Diff
315
core/html_builder.h
Normal file
315
core/html_builder.h
Normal file
@ -0,0 +1,315 @@
|
||||
#ifndef HTML_BUILDER_H
|
||||
#define HTML_BUILDER_H
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Request;
|
||||
|
||||
//This might be converted to a form validator
|
||||
|
||||
class HTMLTag {
|
||||
public:
|
||||
bool simple;
|
||||
std::string result;
|
||||
|
||||
HTMLTag *str(const std::string &str);
|
||||
HTMLTag *style(const std::string &val);
|
||||
HTMLTag *href(const std::string &val);
|
||||
HTMLTag *cls(const std::string &val);
|
||||
HTMLTag *id(const std::string &val);
|
||||
HTMLTag *name(const std::string &val);
|
||||
HTMLTag *method(const std::string &val);
|
||||
HTMLTag *type(const std::string &val);
|
||||
|
||||
HTMLTag *attrib(const std::string &attr, const std::string &val);
|
||||
|
||||
HTMLTag *start(const std::string &p_new_tag, const bool p_simple = false);
|
||||
HTMLTag *reset();
|
||||
HTMLTag *close();
|
||||
|
||||
bool has_data();
|
||||
|
||||
HTMLTag();
|
||||
};
|
||||
|
||||
class HTMLBuilder {
|
||||
public:
|
||||
std::string result;
|
||||
|
||||
void comment(const std::string &val);
|
||||
HTMLTag *doctype();
|
||||
void doctype(const std::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 <br>
|
||||
//Note that I might have a few that shouldn't be here, those will be removed as I find them
|
||||
void ca();
|
||||
void cabbr();
|
||||
void cacronym();
|
||||
void caddress();
|
||||
void capplet();
|
||||
void carea();
|
||||
void carticle();
|
||||
void caside();
|
||||
void caudio();
|
||||
void cb();
|
||||
void cbasefont();
|
||||
void cbdi();
|
||||
void cbdo();
|
||||
void cbig();
|
||||
void cblockquote();
|
||||
void cbody();
|
||||
void cbutton();
|
||||
void ccanvas();
|
||||
|
||||
void ccaption();
|
||||
void ccenter();
|
||||
void ccite();
|
||||
void ccode();
|
||||
void ccol();
|
||||
void ccolgroup();
|
||||
void cdata();
|
||||
void cdatalist();
|
||||
void cdd();
|
||||
void cdel();
|
||||
void cdetails();
|
||||
void cdfn();
|
||||
void cdialog();
|
||||
void cdir();
|
||||
void cdiv();
|
||||
void cdl();
|
||||
void cdt();
|
||||
|
||||
void cem();
|
||||
void cembed();
|
||||
void cfieldset();
|
||||
void cfigcaption();
|
||||
void cfigure();
|
||||
void cfont();
|
||||
void cfooter();
|
||||
void cform();
|
||||
void cframe();
|
||||
void cframeset();
|
||||
void ch1();
|
||||
void ch2();
|
||||
void ch3();
|
||||
void ch4();
|
||||
void ch5();
|
||||
void ch6();
|
||||
void chead();
|
||||
void cheader();
|
||||
void chr();
|
||||
void chtml();
|
||||
|
||||
void ci();
|
||||
void ciframe();
|
||||
void cimg();
|
||||
void cinput();
|
||||
void cins();
|
||||
void ckbd();
|
||||
void clabel();
|
||||
void clegend();
|
||||
void cli();
|
||||
void clink();
|
||||
void cmain();
|
||||
void cmap();
|
||||
void cmark();
|
||||
void cmeta();
|
||||
void cmeter();
|
||||
|
||||
void cnav();
|
||||
void cnoframes();
|
||||
void cnoscript();
|
||||
void cobject();
|
||||
void c_ol();
|
||||
void coptgroup();
|
||||
void coption();
|
||||
void coutput();
|
||||
void cp();
|
||||
void cparam();
|
||||
void cpicture();
|
||||
void cpre();
|
||||
void cprogress();
|
||||
void cq();
|
||||
void crp();
|
||||
|
||||
void crt();
|
||||
void cruby();
|
||||
void cs();
|
||||
void csamp();
|
||||
void cscript();
|
||||
void csection();
|
||||
void cselect();
|
||||
void csmall();
|
||||
void csource();
|
||||
void cspan();
|
||||
void cstrike();
|
||||
void cstrong();
|
||||
void cstyle();
|
||||
void csub();
|
||||
void csummary();
|
||||
void csup();
|
||||
|
||||
void csvg();
|
||||
void ctable();
|
||||
void ctbody();
|
||||
void ctd();
|
||||
void ctemplateh();
|
||||
void ctextarea();
|
||||
void ctfoot();
|
||||
void cth();
|
||||
void cthead();
|
||||
void ctime();
|
||||
void ctitle();
|
||||
void ctr();
|
||||
void ctrack();
|
||||
void ctt();
|
||||
void cu();
|
||||
void cul();
|
||||
void cvar();
|
||||
void cvideo();
|
||||
void cwbr();
|
||||
|
||||
//write
|
||||
void w(const std::string &val);
|
||||
//write_escaped
|
||||
void we(const std::string &val);
|
||||
|
||||
void write_tag();
|
||||
|
||||
HTMLBuilder();
|
||||
virtual ~HTMLBuilder();
|
||||
|
||||
protected:
|
||||
HTMLTag tag;
|
||||
};
|
||||
|
||||
#endif
|
@ -10,6 +10,8 @@
|
||||
|
||||
#include "core/database_manager.h"
|
||||
|
||||
#include "core/html_builder.h"
|
||||
|
||||
void RDNApplication::index(Object *instance, Request *request) {
|
||||
std::string body;
|
||||
|
||||
@ -19,7 +21,32 @@ void RDNApplication::index(Object *instance, Request *request) {
|
||||
return;
|
||||
}
|
||||
|
||||
request->body.append("<p>Test HTML Body</p>");
|
||||
HTMLBuilder b;
|
||||
|
||||
b.h1();
|
||||
b.w("Testh1");
|
||||
b.ch1();
|
||||
|
||||
b.h2()->cls("tcls")->id("tid");
|
||||
b.w("Testh2");
|
||||
b.ch2();
|
||||
|
||||
b.br();
|
||||
|
||||
b.p();
|
||||
b.w("Test HTML Body HTMLBuilder");
|
||||
b.cp();
|
||||
|
||||
b.form()->method("post")->href("/");
|
||||
|
||||
//->str("/") is a temp hack
|
||||
b.input()->type("text")->str("/");
|
||||
b.input()->type("submit")->str("/");
|
||||
b.cform();
|
||||
|
||||
request->body = b.result;
|
||||
|
||||
//request->body.append("<p>Test HTML Body</p>");
|
||||
request->compile_body();
|
||||
|
||||
FileCache::get_singleton()->set_cached_body("index", request->compiled_body);
|
||||
|
Loading…
Reference in New Issue
Block a user