mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2024-11-14 04:57:21 +01:00
535 lines
16 KiB
C++
535 lines
16 KiB
C++
#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 *accept(const String &val);
|
|
HTMLTag *src(const String &val);
|
|
HTMLTag *alt(const String &val);
|
|
HTMLTag *inputmode(const String &val);
|
|
HTMLTag *list(const String &val);
|
|
|
|
HTMLTag *autocomplete(const String &val);
|
|
|
|
HTMLTag *autocomplete_off();
|
|
HTMLTag *autocomplete_on();
|
|
HTMLTag *autocomplete_name();
|
|
HTMLTag *autocomplete_name_honorific_prefix();
|
|
HTMLTag *autocomplete_name_given_name();
|
|
HTMLTag *autocomplete_name_additional_name();
|
|
HTMLTag *autocomplete_name_family_name();
|
|
HTMLTag *autocomplete_name_honorific_suffix();
|
|
HTMLTag *autocomplete_name_nickname();
|
|
HTMLTag *autocomplete_email();
|
|
HTMLTag *autocomplete_username();
|
|
HTMLTag *autocomplete_new_password();
|
|
HTMLTag *autocomplete_current_password();
|
|
HTMLTag *autocomplete_one_time_code();
|
|
HTMLTag *autocomplete_organization_title();
|
|
HTMLTag *autocomplete_organization();
|
|
HTMLTag *autocomplete_street_address();
|
|
HTMLTag *autocomplete_address_line1();
|
|
HTMLTag *autocomplete_address_line2();
|
|
HTMLTag *autocomplete_address_line3();
|
|
HTMLTag *autocomplete_address_level_1();
|
|
HTMLTag *autocomplete_address_level_2();
|
|
HTMLTag *autocomplete_address_level_3();
|
|
HTMLTag *autocomplete_address_level_4();
|
|
HTMLTag *autocomplete_country();
|
|
HTMLTag *autocomplete_country_name();
|
|
HTMLTag *autocomplete_postal_code();
|
|
HTMLTag *autocomplete_cc_name();
|
|
HTMLTag *autocomplete_cc_given_name();
|
|
HTMLTag *autocomplete_cc_additional_name();
|
|
HTMLTag *autocomplete_cc_family_name();
|
|
HTMLTag *autocomplete_cc_number();
|
|
HTMLTag *autocomplete_cc_exp();
|
|
HTMLTag *autocomplete_cc_exp_month();
|
|
HTMLTag *autocomplete_cc_exp_year();
|
|
HTMLTag *autocomplete_cc_csc();
|
|
HTMLTag *autocomplete_cc_type();
|
|
HTMLTag *autocomplete_transaction_currency();
|
|
HTMLTag *autocomplete_transaction_amount();
|
|
HTMLTag *autocomplete_language();
|
|
HTMLTag *autocomplete_bday();
|
|
HTMLTag *autocomplete_bday_day();
|
|
HTMLTag *autocomplete_bday_month();
|
|
HTMLTag *autocomplete_bday_year();
|
|
HTMLTag *autocomplete_sex();
|
|
HTMLTag *autocomplete_tel();
|
|
HTMLTag *autocomplete_tel_country_code();
|
|
HTMLTag *autocomplete_tel_national();
|
|
HTMLTag *autocomplete_tel_area_code();
|
|
HTMLTag *autocomplete_tel_local();
|
|
HTMLTag *autocomplete_tel_extension();
|
|
HTMLTag *autocomplete_impp();
|
|
HTMLTag *autocomplete_url();
|
|
HTMLTag *autocomplete_photo();
|
|
|
|
HTMLTag *onclick(const String &val);
|
|
|
|
HTMLTag *checked(const bool val = true);
|
|
HTMLTag *selected(const bool val = true);
|
|
HTMLTag *autofocus(const bool val = true);
|
|
HTMLTag *disabled(const bool val = true);
|
|
HTMLTag *multiple(const bool val = true);
|
|
HTMLTag *required(const bool val = true);
|
|
HTMLTag *spellcheck(const bool val);
|
|
|
|
HTMLTag *max(const String &val);
|
|
HTMLTag *min(const String &val);
|
|
HTMLTag *step(const String &val);
|
|
HTMLTag *step_any();
|
|
|
|
HTMLTag *minlength(const int val);
|
|
HTMLTag *minlength(const String &val);
|
|
HTMLTag *maxlength(const int val);
|
|
HTMLTag *maxlength(const String &val);
|
|
HTMLTag *size(const int val);
|
|
HTMLTag *size(const String &val);
|
|
|
|
HTMLTag *width(const int val);
|
|
HTMLTag *width(const String &val);
|
|
HTMLTag *height(const int val);
|
|
HTMLTag *height(const String &val);
|
|
|
|
HTMLTag *pattern(const String &val);
|
|
|
|
HTMLTag *method(const String &val);
|
|
HTMLTag *method_get();
|
|
HTMLTag *method_post();
|
|
|
|
HTMLTag *action(const String &val);
|
|
HTMLTag *type(const String &val);
|
|
HTMLTag *placeholder(const String &val);
|
|
HTMLTag *fora(const String &val); // for attrib -> for is reserved keyword
|
|
HTMLTag *rel(const String &val);
|
|
HTMLTag *rel_stylesheet();
|
|
HTMLTag *charset(const String &val);
|
|
HTMLTag *charset_utf_8();
|
|
|
|
HTMLTag *itbutton();
|
|
HTMLTag *itcheckbox();
|
|
HTMLTag *itcolor();
|
|
HTMLTag *itdate();
|
|
HTMLTag *itdatetime_local();
|
|
HTMLTag *itemail();
|
|
HTMLTag *itfile();
|
|
HTMLTag *ithidden();
|
|
HTMLTag *itimage();
|
|
HTMLTag *itmonth();
|
|
HTMLTag *itnumber();
|
|
HTMLTag *itpassword();
|
|
HTMLTag *itradio();
|
|
HTMLTag *itrange();
|
|
HTMLTag *itreset();
|
|
HTMLTag *itsearch();
|
|
HTMLTag *itsubmit();
|
|
HTMLTag *ittel();
|
|
HTMLTag *ittext();
|
|
HTMLTag *ittime();
|
|
HTMLTag *iturl();
|
|
HTMLTag *itweek();
|
|
|
|
HTMLTag *inputmode_none();
|
|
HTMLTag *inputmode_text();
|
|
HTMLTag *inputmode_decimal();
|
|
HTMLTag *inputmode_numeric();
|
|
HTMLTag *inputmode_tel();
|
|
HTMLTag *inputmode_search();
|
|
HTMLTag *inputmode_email();
|
|
HTMLTag *inputmode_url();
|
|
|
|
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();
|
|
|
|
HTMLBuilder *a(const String &href, const String &cls = "", const String &id = "");
|
|
HTMLBuilder *fa(const String &href, const String &body, const String &cls = "", const String &id = "");
|
|
|
|
HTMLBuilder *div(const String &cls, const String &id = "");
|
|
HTMLBuilder *fdiv(const String &body, const String &cls = "", const String &id = "");
|
|
|
|
HTMLBuilder *textarea(const String &name, const String &cls = "", const String &id = "");
|
|
HTMLBuilder *ftextarea(const String &name, const String &body, const String &cls = "", const String &id = "");
|
|
|
|
HTMLBuilder *select(const String &name, const String &cls = "", const String &id = "");
|
|
|
|
HTMLTag *option(const String &value);
|
|
HTMLBuilder *foption(const String &value, const String &body, const bool selected = false);
|
|
|
|
// 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
|
|
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();
|
|
|
|
HTMLTag *form_get();
|
|
HTMLTag *form_post();
|
|
HTMLBuilder *form_get(const String &action, const String &cls = "", const String &id = "");
|
|
HTMLBuilder *form_post(const String &action, const String &cls = "", const String &id = "");
|
|
//will add a csrf token from request
|
|
HTMLBuilder *form_post(const String &action, Request *request, const String &cls = "", const String &id = "");
|
|
|
|
HTMLTag *input_button();
|
|
HTMLTag *input_checkbox();
|
|
HTMLTag *input_color();
|
|
HTMLTag *input_date();
|
|
HTMLTag *input_datetime_local();
|
|
HTMLTag *input_email();
|
|
HTMLTag *input_file();
|
|
HTMLTag *input_hidden();
|
|
HTMLTag *input_image();
|
|
HTMLTag *input_month();
|
|
HTMLTag *input_number();
|
|
HTMLTag *input_password();
|
|
HTMLTag *input_radio();
|
|
HTMLTag *input_range();
|
|
HTMLTag *input_reset();
|
|
HTMLTag *input_search();
|
|
HTMLTag *input_submit();
|
|
HTMLTag *input_tel();
|
|
HTMLTag *input_text();
|
|
HTMLTag *input_time();
|
|
HTMLTag *input_url();
|
|
HTMLTag *input_week();
|
|
|
|
HTMLBuilder *label(const String &pfor, const String &plabel, const String &cls = "", const String &id = "");
|
|
|
|
HTMLBuilder *input_button(const String &name, const String &value = "", const String &cls = "", const String &id = "");
|
|
HTMLBuilder *input_checkbox(const String &name, const String &value = "", const bool checked = false, const String &cls = "", const String &id = "");
|
|
HTMLBuilder *input_color(const String &name, const String &value = "", const String &cls = "", const String &id = "");
|
|
HTMLBuilder *input_date(const String &name, const String &value = "", const String &cls = "", const String &id = "", const String &date_min = "", const String &date_max = "", const String &date_step = "");
|
|
HTMLBuilder *input_datetime_local(const String &name, const String &value = "", const String &cls = "", const String &id = "", const String &date_min = "", const String &date_max = "", const String &date_step = "");
|
|
HTMLBuilder *input_email(const String &name, const String &value = "", const String &placeholder = "", const String &cls = "", const String &id = "");
|
|
HTMLBuilder *input_file(const String &name, const String &accept = "", const String &cls = "", const String &id = "");
|
|
HTMLBuilder *input_image(const String &name, const String &src = "", const String &alt = "", const String &cls = "", const String &id = "", const int width = 0, const int height = 0);
|
|
HTMLBuilder *input_month(const String &name, const String &cls = "", const String &id = "");
|
|
HTMLBuilder *input_number(const String &name, const String & = "", const String & = "", const String &cls = "", const String &id = "");
|
|
HTMLBuilder *input_password(const String &name, const String &value = "", const String &placeholder = "", const String &cls = "", const String &id = "", const String &minlength = "", const String &maxlength = "", const String &size = "");
|
|
HTMLBuilder *input_radio(const String &name, const String &value = "", const String &cls = "", const String &id = "");
|
|
HTMLBuilder *input_range(const String &name, const String &value = "", const String &vmin = "", const String &vmax = "", const String &vstep = "", const String &cls = "", const String &id = "");
|
|
HTMLBuilder *input_reset(const String &name, const String &value = "", const String &cls = "", const String &id = "");
|
|
HTMLBuilder *input_search(const String &name, const String &value = "", const String &placeholder = "", const String &cls = "", const String &id = "", const String &minlength = "", const String &maxlength = "", const String &size = "", const String &pattern = "");
|
|
HTMLBuilder *input_submit(const String &value, const String &cls = "", const String &id = "");
|
|
HTMLBuilder *input_tel(const String &name, const String &value = "", const String &placeholder = "", const String &cls = "", const String &id = "", const String &minlength = "", const String &maxlength = "", const String &size = "", const String &pattern = "");
|
|
HTMLBuilder *input_text(const String &name, const String &value = "", const String &placeholder = "", const String &cls = "", const String &id = "", const String &minlength = "", const String &maxlength = "", const String &size = "");
|
|
HTMLBuilder *input_time(const String &name, const String &cls = "", const String &id = "", const String &vmin = "", const String &vmax = "", const String &vstep = "");
|
|
HTMLBuilder *input_url(const String &name, const String &value = "", const String &placeholder = "", const String &cls = "", const String &id = "", const String &minlength = "", const String &maxlength = "", const String &size = "");
|
|
HTMLBuilder *input_week(const String &name, const String &cls = "", const String &id = "", const String &vmin = "", const String &vmax = "");
|
|
HTMLBuilder *input_hidden(const String &name, const String &value);
|
|
|
|
HTMLBuilder *csrf_token(const String &token);
|
|
HTMLBuilder *csrf_token(Request *request);
|
|
|
|
void f();
|
|
|
|
// write
|
|
HTMLBuilder *w(const String &val);
|
|
|
|
HTMLBuilder *wn(const double val, int p_decimals = -1);
|
|
HTMLBuilder *wns(const double val);
|
|
HTMLBuilder *wr(const double val, const bool p_trailing = true);
|
|
HTMLBuilder *wi(const int64_t val, const int base = 10, const bool capitalize_hex = false);
|
|
HTMLBuilder *wui(const uint64_t val, const int base = 10, const bool capitalize_hex = false);
|
|
HTMLBuilder *wbn(const bool val);
|
|
HTMLBuilder *wbs(const bool val);
|
|
|
|
// write_escaped
|
|
HTMLBuilder *we(const String &val);
|
|
|
|
HTMLBuilder *write_tag();
|
|
|
|
HTMLBuilder();
|
|
virtual ~HTMLBuilder();
|
|
|
|
protected:
|
|
HTMLTag tag;
|
|
};
|
|
|
|
#endif |