Complete tag relation rules
This commit is contained in:
parent
2856aa71c2
commit
ab284aa71e
|
@ -3,11 +3,81 @@
|
|||
|
||||
#include "../../datastructure/map/str-strset.h"
|
||||
#include "../../util/hbchar.h"
|
||||
#include "../tag/headingtags.c"
|
||||
#include "../tag/mediatags.c"
|
||||
#include "../tag/sectioningtags.c"
|
||||
|
||||
static nh_map_str_strset_t hb_r_blacklistchildren_map;
|
||||
|
||||
void hb_r_blacklistchildren_init(void) {
|
||||
hb_r_blacklistchildren_map = nh_map_str_strset_create();
|
||||
|
||||
// <address>
|
||||
nh_set_str_t address = nh_set_str_create();
|
||||
hb_r_headingtags_add_elems(address);
|
||||
hb_r_sectioningtags_add_elems(address);
|
||||
nh_set_str_add(address, "address");
|
||||
nh_set_str_add(address, "header");
|
||||
nh_set_str_add(address, "footer");
|
||||
nh_map_str_strset_set(hb_r_blacklistchildren_map, "address", address);
|
||||
|
||||
// <audio>
|
||||
nh_set_str_t audio = nh_set_str_create();
|
||||
hb_r_mediatags_add_elems(audio);
|
||||
nh_map_str_strset_set(hb_r_blacklistchildren_map, "audio", audio);
|
||||
|
||||
// <dfn>
|
||||
nh_set_str_t dfn = nh_set_str_create();
|
||||
nh_set_str_add(dfn, "dfn");
|
||||
nh_map_str_strset_set(hb_r_blacklistchildren_map, "dfn", dfn);
|
||||
|
||||
// <dt>
|
||||
nh_set_str_t dt = nh_set_str_create();
|
||||
hb_r_headingtags_add_elems(dt);
|
||||
hb_r_sectioningtags_add_elems(dt);
|
||||
nh_set_str_add(dt, "header");
|
||||
nh_set_str_add(dt, "footer");
|
||||
nh_map_str_strset_set(hb_r_blacklistchildren_map, "dt", dt);
|
||||
|
||||
// <footer>
|
||||
nh_set_str_t footer = nh_set_str_create();
|
||||
nh_set_str_add(footer, "header");
|
||||
nh_set_str_add(footer, "footer");
|
||||
nh_map_str_strset_set(hb_r_blacklistchildren_map, "footer", footer);
|
||||
|
||||
// <form>
|
||||
nh_set_str_t form = nh_set_str_create();
|
||||
nh_set_str_add(form, "form");
|
||||
nh_map_str_strset_set(hb_r_blacklistchildren_map, "form", form);
|
||||
|
||||
// <header>
|
||||
nh_set_str_t header = nh_set_str_create();
|
||||
nh_set_str_add(header, "header");
|
||||
nh_set_str_add(header, "footer");
|
||||
nh_map_str_strset_set(hb_r_blacklistchildren_map, "header", header);
|
||||
|
||||
// <label>
|
||||
nh_set_str_t label = nh_set_str_create();
|
||||
nh_set_str_add(label, "label");
|
||||
nh_map_str_strset_set(hb_r_blacklistchildren_map, "label", label);
|
||||
|
||||
// <progress>
|
||||
nh_set_str_t progress = nh_set_str_create();
|
||||
nh_set_str_add(progress, "progress");
|
||||
nh_map_str_strset_set(hb_r_blacklistchildren_map, "progress", progress);
|
||||
|
||||
// <th>
|
||||
nh_set_str_t th = nh_set_str_create();
|
||||
hb_r_headingtags_add_elems(th);
|
||||
hb_r_sectioningtags_add_elems(th);
|
||||
nh_set_str_add(th, "header");
|
||||
nh_set_str_add(th, "footer");
|
||||
nh_map_str_strset_set(hb_r_blacklistchildren_map, "th", th);
|
||||
|
||||
// <video>
|
||||
nh_set_str_t video = nh_set_str_create();
|
||||
hb_r_mediatags_add_elems(video);
|
||||
nh_map_str_strset_set(hb_r_blacklistchildren_map, "video", video);
|
||||
}
|
||||
|
||||
int hb_r_blacklistchildren_check(hb_char_t *parent) {
|
||||
|
|
|
@ -3,12 +3,57 @@
|
|||
|
||||
#include "../../datastructure/map/str-strset.h"
|
||||
#include "../../util/hbchar.h"
|
||||
#include "../tag/headingtags.c"
|
||||
|
||||
static nh_map_str_strset_t hb_r_whitelistchildren_map;
|
||||
|
||||
void hb_r_whitelistchildren_init(void) {
|
||||
hb_r_whitelistchildren_map = nh_map_str_strset_create();
|
||||
|
||||
// <colgroup>
|
||||
nh_set_str_t colgroup = nh_set_str_create();
|
||||
nh_set_str_add(colgroup, "col");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "colgroup", colgroup);
|
||||
|
||||
// <datalist>
|
||||
nh_set_str_t datalist = nh_set_str_create();
|
||||
nh_set_str_add(datalist, "option");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "datalist", datalist);
|
||||
|
||||
// <dl>
|
||||
nh_set_str_t dl = nh_set_str_create();
|
||||
nh_set_str_add(dl, "dt");
|
||||
nh_set_str_add(dl, "dd");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "dl", dl);
|
||||
|
||||
// <hgroup>
|
||||
nh_set_str_t hgroup = nh_set_str_create();
|
||||
hb_r_headingtags_add_elems(hgroup);
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "hgroup", hgroup);
|
||||
|
||||
// <ol>
|
||||
nh_set_str_t ol = nh_set_str_create();
|
||||
nh_set_str_add(ol, "li");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "ol", ol);
|
||||
|
||||
// <optgroup>
|
||||
nh_set_str_t optgroup = nh_set_str_create();
|
||||
nh_set_str_add(optgroup, "option");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "optgroup", optgroup);
|
||||
|
||||
// <picture>
|
||||
nh_set_str_t picture = nh_set_str_create();
|
||||
nh_set_str_add(picture, "source");
|
||||
nh_set_str_add(picture, "img");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "picture", picture);
|
||||
|
||||
// <select>
|
||||
nh_set_str_t select = nh_set_str_create();
|
||||
nh_set_str_add(select, "optgroup");
|
||||
nh_set_str_add(select, "option");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "select", select);
|
||||
|
||||
// <table>
|
||||
nh_set_str_t table = nh_set_str_create();
|
||||
nh_set_str_add(table, "caption");
|
||||
nh_set_str_add(table, "colgroup");
|
||||
|
@ -18,6 +63,34 @@ void hb_r_whitelistchildren_init(void) {
|
|||
nh_set_str_add(table, "tfoot");
|
||||
nh_set_str_add(table, "tr");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "table", table);
|
||||
|
||||
// <tbody>
|
||||
nh_set_str_t tbody = nh_set_str_create();
|
||||
nh_set_str_add(tbody, "tr");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "tbody", tbody);
|
||||
|
||||
// <tfoot>
|
||||
nh_set_str_t tfoot = nh_set_str_create();
|
||||
nh_set_str_add(tfoot, "tr");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "tfoot", tfoot);
|
||||
|
||||
// <thead>
|
||||
nh_set_str_t thead = nh_set_str_create();
|
||||
nh_set_str_add(thead, "tr");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "thead", thead);
|
||||
|
||||
// <tr>
|
||||
nh_set_str_t tr = nh_set_str_create();
|
||||
nh_set_str_add(tr, "td");
|
||||
nh_set_str_add(tr, "th");
|
||||
nh_set_str_add(tr, "template");
|
||||
nh_set_str_add(tr, "script");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "tr", tr);
|
||||
|
||||
// <ul>
|
||||
nh_set_str_t ul = nh_set_str_create();
|
||||
nh_set_str_add(ul, "li");
|
||||
nh_map_str_strset_set(hb_r_whitelistchildren_map, "ul", ul);
|
||||
}
|
||||
|
||||
int hb_r_whitelistchildren_check(hb_char_t *parent) {
|
||||
|
|
|
@ -3,36 +3,144 @@
|
|||
|
||||
#include "../../datastructure/map/str-strset.h"
|
||||
#include "../../util/hbchar.h"
|
||||
#include "../tag/mediatags.c"
|
||||
|
||||
static nh_map_str_strset_t hb_r_whitelistparents_map;
|
||||
|
||||
void hb_r_whitelistparents_init(void) {
|
||||
hb_r_whitelistparents_map = nh_map_str_strset_create();
|
||||
|
||||
nh_set_str_t li = nh_set_str_create();
|
||||
nh_set_str_add(li, "ul");
|
||||
nh_set_str_add(li, "ol");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "li", li);
|
||||
|
||||
nh_set_str_t dt = nh_set_str_create();
|
||||
nh_set_str_add(dt, "dl");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "dt", dt);
|
||||
|
||||
nh_set_str_t dd = nh_set_str_create();
|
||||
nh_set_str_add(dd, "dl");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "dd", dd);
|
||||
|
||||
// <caption>
|
||||
nh_set_str_t caption = nh_set_str_create();
|
||||
nh_set_str_add(caption, "table");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "caption", caption);
|
||||
|
||||
// <caption>
|
||||
nh_set_str_t caption = nh_set_str_create();
|
||||
nh_set_str_add(caption, "table");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "caption", caption);
|
||||
|
||||
// <col>
|
||||
nh_set_str_t col = nh_set_str_create();
|
||||
nh_set_str_add(col, "table");
|
||||
nh_set_str_add(col, "colgroup");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "col", col);
|
||||
|
||||
// <colgroup>
|
||||
nh_set_str_t colgroup = nh_set_str_create();
|
||||
nh_set_str_add(colgroup, "table");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "colgroup", colgroup);
|
||||
|
||||
nh_set_str_t col = nh_set_str_create();
|
||||
nh_set_str_add(col, "table");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "col", col);
|
||||
// <dd>
|
||||
nh_set_str_t dd = nh_set_str_create();
|
||||
nh_set_str_add(dd, "dl");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "dd", dd);
|
||||
|
||||
// <dt>
|
||||
nh_set_str_t dt = nh_set_str_create();
|
||||
nh_set_str_add(dt, "dl");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "dt", dt);
|
||||
|
||||
// <figcaption>
|
||||
nh_set_str_t figcaption = nh_set_str_create();
|
||||
nh_set_str_add(figcaption, "figure");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "figcaption", figcaption);
|
||||
|
||||
// <legend>
|
||||
nh_set_str_t legend = nh_set_str_create();
|
||||
nh_set_str_add(legend, "fieldset");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "legend", legend);
|
||||
|
||||
// <li>
|
||||
nh_set_str_t li = nh_set_str_create();
|
||||
nh_set_str_add(li, "ul");
|
||||
nh_set_str_add(li, "ol");
|
||||
nh_set_str_add(li, "menu");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "li", li);
|
||||
|
||||
// <optgroup>
|
||||
nh_set_str_t optgroup = nh_set_str_create();
|
||||
nh_set_str_add(optgroup, "select");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "optgroup", optgroup);
|
||||
|
||||
// <option>
|
||||
nh_set_str_t option = nh_set_str_create();
|
||||
nh_set_str_add(option, "select");
|
||||
nh_set_str_add(option, "optgroup");
|
||||
nh_set_str_add(option, "datalist");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "option", option);
|
||||
|
||||
// <param>
|
||||
nh_set_str_t param = nh_set_str_create();
|
||||
nh_set_str_add(param, "object");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "param", param);
|
||||
|
||||
// <rp>
|
||||
nh_set_str_t rp = nh_set_str_create();
|
||||
nh_set_str_add(rp, "ruby");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "rp", rp);
|
||||
|
||||
// <rt>
|
||||
nh_set_str_t rt = nh_set_str_create();
|
||||
nh_set_str_add(rt, "ruby");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "rt", rt);
|
||||
|
||||
// <rtc>
|
||||
nh_set_str_t rtc = nh_set_str_create();
|
||||
nh_set_str_add(rtc, "ruby");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "rtc", rtc);
|
||||
|
||||
// <summary>
|
||||
nh_set_str_t summary = nh_set_str_create();
|
||||
nh_set_str_add(summary, "details");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "summary", summary);
|
||||
|
||||
// <source>
|
||||
nh_set_str_t source = nh_set_str_create();
|
||||
hb_r_mediatags_add_elems(source);
|
||||
nh_set_str_add(source, "picture");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "source", source);
|
||||
|
||||
// <track>
|
||||
nh_set_str_t track = nh_set_str_create();
|
||||
hb_r_mediatags_add_elems(track);
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "track", track);
|
||||
|
||||
// <tbody>
|
||||
nh_set_str_t tbody = nh_set_str_create();
|
||||
nh_set_str_add(tbody, "table");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "tbody", tbody);
|
||||
|
||||
// <td>
|
||||
nh_set_str_t td = nh_set_str_create();
|
||||
nh_set_str_add(td, "tr");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "td", td);
|
||||
|
||||
// <tfoot>
|
||||
nh_set_str_t tfoot = nh_set_str_create();
|
||||
nh_set_str_add(tfoot, "table");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "tfoot", tfoot);
|
||||
|
||||
// <th>
|
||||
nh_set_str_t th = nh_set_str_create();
|
||||
nh_set_str_add(th, "tr");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "th", th);
|
||||
|
||||
// <thead>
|
||||
nh_set_str_t thead = nh_set_str_create();
|
||||
nh_set_str_add(thead, "table");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "thead", thead);
|
||||
|
||||
// <tr>
|
||||
nh_set_str_t tr = nh_set_str_create();
|
||||
nh_set_str_add(tr, "table");
|
||||
nh_set_str_add(tr, "thead");
|
||||
nh_set_str_add(tr, "tbody");
|
||||
nh_set_str_add(tr, "tfoot");
|
||||
nh_map_str_strset_set(hb_r_whitelistparents_map, "tr", tr);
|
||||
|
||||
// <template>
|
||||
// Should be <body>, <frameset>, <head>, <dl>, <colgroup>, but ignoring
|
||||
}
|
||||
|
||||
int hb_r_whitelistparents_check(hb_char_t *child) {
|
||||
|
|
Loading…
Reference in New Issue