Skip to content

Commit

Permalink
fixed uppercase and lowercase letters in tags
Browse files Browse the repository at this point in the history
  • Loading branch information
Himujjal committed Apr 18, 2021
1 parent 6e9ff3a commit 84d1a6a
Showing 4 changed files with 169 additions and 131 deletions.
8 changes: 4 additions & 4 deletions src/scanner.c
Original file line number Diff line number Diff line change
@@ -91,7 +91,7 @@ ekstring scan_tag_name(Scanner *scanner, TSLexer *lexer) {
ekstring tag_name = NaS(scanner->A);
while (iswalnum(lexer->lookahead) || lexer->lookahead == '-' ||
lexer->lookahead == ':') {
tag_name = concat_string_char(tag_name, towupper(lexer->lookahead));
tag_name = concat_string_char(tag_name, (lexer->lookahead));
lexer->advance(lexer, false);
}
return tag_name;
@@ -134,13 +134,13 @@ bool scan_raw_text(Scanner *scanner, TSLexer *lexer) {

Tag *lastTag = (Tag *)vc_vector_back(scanner->tags);
const ekstring end_delimiter =
lastTag->type == SCRIPT ? init_string_str(scanner->A, "</SCRIPT", 8)
: init_string_str(scanner->A, "</STYLE", 7);
lastTag->type == SCRIPT ? init_string_str(scanner->A, "</script", 8)
: init_string_str(scanner->A, "</style", 7);

unsigned delimiter_index = 0;

while (lexer->lookahead) {
if ((char)towupper(lexer->lookahead) ==
if ((char)(lexer->lookahead) ==
end_delimiter.buf[delimiter_index]) {
delimiter_index++;
if (delimiter_index == end_delimiter.length)
252 changes: 126 additions & 126 deletions src/uthash.h
Original file line number Diff line number Diff line change
@@ -582,132 +582,132 @@ const struct hashmap_s *get_tag_map(za_Allocator *AA) {
int res = hashmap_create(AA, 1024, data);

if (res == 0) {
#define TAG(name) hashmap_put(data, #name, strlen(#name), (name))
TAG(AREA);
TAG(BASE);
TAG(BASEFONT);
TAG(BGSOUND);
TAG(BR);
TAG(COL);
TAG(COMMAND);
TAG(EMBED);
TAG(FRAME);
TAG(HR);
TAG(IMAGE);
TAG(IMG);
TAG(INPUT);
TAG(ISINDEX);
TAG(KEYGEN);
TAG(LINK);
TAG(MENUITEM);
TAG(META);
TAG(NEXTID);
TAG(PARAM);
TAG(SOURCE);
TAG(TRACK);
TAG(WBR);
TAG(A);
TAG(ABBR);
TAG(ADDRESS);
TAG(ARTICLE);
TAG(ASIDE);
TAG(AUDIO);
TAG(B);
TAG(BDI);
TAG(BDO);
TAG(BLOCKQUOTE);
TAG(BODY);
TAG(BUTTON);
TAG(CANVAS);
TAG(CAPTION);
TAG(CITE);
TAG(CODE);
TAG(COLGROUP);
TAG(DATA);
TAG(DATALIST);
TAG(DD);
TAG(DEL);
TAG(DETAILS);
TAG(DFN);
TAG(DIALOG);
TAG(DIV);
TAG(DL);
TAG(DT);
TAG(EM);
TAG(FIELDSET);
TAG(FIGCAPTION);
TAG(FIGURE);
TAG(FOOTER);
TAG(FORM);
TAG(H1);
TAG(H2);
TAG(H3);
TAG(H4);
TAG(H5);
TAG(H6);
TAG(HEAD);
TAG(HEADER);
TAG(HGROUP);
TAG(HTML);
TAG(I);
TAG(IFRAME);
TAG(INS);
TAG(KBD);
TAG(LABEL);
TAG(LEGEND);
TAG(LI);
TAG(MAIN);
TAG(MAP);
TAG(MARK);
TAG(MATH);
TAG(MENU);
TAG(METER);
TAG(NAV);
TAG(NOSCRIPT);
TAG(OBJECT);
TAG(OL);
TAG(OPTGROUP);
TAG(OPTION);
TAG(OUTPUT);
TAG(P);
TAG(PICTURE);
TAG(PRE);
TAG(PROGRESS);
TAG(Q);
TAG(RB);
TAG(RP);
TAG(RT);
TAG(RTC);
TAG(RUBY);
TAG(S);
TAG(SAMP);
TAG(SCRIPT);
TAG(SECTION);
TAG(SELECT);
TAG(SLOT);
TAG(SMALL);
TAG(SPAN);
TAG(STRONG);
TAG(STYLE);
TAG(SUB);
TAG(SUMMARY);
TAG(SUP);
TAG(SVG);
TAG(TABLE);
TAG(TBODY);
TAG(TD);
TAG(TEMPLATE);
TAG(TEXTAREA);
TAG(TFOOT);
TAG(TH);
TAG(THEAD);
TAG(TIME);
TAG(TITLE);
TAG(TR);
TAG(U);
TAG(UL);
TAG(VAR);
TAG(VIDEO);
#define TAG(name, str) hashmap_put(data, str, strlen(str), (name))
TAG(AREA, "area");
TAG(BASE, "base");
TAG(BASEFONT, "basefont");
TAG(BGSOUND, "bgsound");
TAG(BR, "br");
TAG(COL, "col");
TAG(COMMAND, "command");
TAG(EMBED, "embed");
TAG(FRAME, "frame");
TAG(HR, "hr");
TAG(IMAGE, "image");
TAG(IMG, "img");
TAG(INPUT, "input");
TAG(ISINDEX, "isindex");
TAG(KEYGEN, "keygen");
TAG(LINK, "link");
TAG(MENUITEM, "menuitem");
TAG(META, "meta");
TAG(NEXTID, "nextid");
TAG(PARAM, "param");
TAG(SOURCE, "source");
TAG(TRACK, "track");
TAG(WBR, "wbr");
TAG(A, "a");
TAG(ABBR, "bbr");
TAG(ADDRESS, "address");
TAG(ARTICLE, "article");
TAG(ASIDE, "aside");
TAG(AUDIO, "audio");
TAG(B, "b");
TAG(BDI, "di");
TAG(BDO, "bdo");
TAG(BLOCKQUOTE, "blockquote");
TAG(BODY, "body");
TAG(BUTTON, "button");
TAG(CANVAS, "canvas");
TAG(CAPTION, "caption");
TAG(CITE, "cite");
TAG(CODE, "code");
TAG(COLGROUP, "colgroup");
TAG(DATA, "data");
TAG(DATALIST, "datalist");
TAG(DD, "dd");
TAG(DEL, "del");
TAG(DETAILS, "details");
TAG(DFN, "dfn");
TAG(DIALOG, "dialog");
TAG(DIV, "div");
TAG(DL, "dl");
TAG(DT, "dt");
TAG(EM, "em");
TAG(FIELDSET, "fieldset");
TAG(FIGCAPTION, "figcaption");
TAG(FIGURE, "figure");
TAG(FOOTER, "footer");
TAG(FORM, "form");
TAG(H1, "h1");
TAG(H2, "h2");
TAG(H3, "h3");
TAG(H4, "h4");
TAG(H5, "h5");
TAG(H6, "h6");
TAG(HEAD, "head");
TAG(HEADER, "header");
TAG(HGROUP, "hgroup");
TAG(HTML, "html");
TAG(I, "i");
TAG(IFRAME, "frame");
TAG(INS, "ins");
TAG(KBD, "kbd");
TAG(LABEL, "label");
TAG(LEGEND, "legend");
TAG(LI, "li");
TAG(MAIN, "main");
TAG(MAP, "map");
TAG(MARK, "mark");
TAG(MATH, "math");
TAG(MENU, "menu");
TAG(METER, "meter");
TAG(NAV, "nav");
TAG(NOSCRIPT, "noscript");
TAG(OBJECT, "object");
TAG(OL, "ol");
TAG(OPTGROUP, "optgroup");
TAG(OPTION, "option");
TAG(OUTPUT, "output");
TAG(P, "p");
TAG(PICTURE, "picture");
TAG(PRE, "pre");
TAG(PROGRESS, "progress");
TAG(Q, "q");
TAG(RB, "rb");
TAG(RP, "RP");
TAG(RT, "rt");
TAG(RTC, "rtc");
TAG(RUBY, "ruby");
TAG(S, "s");
TAG(SAMP, "samp");
TAG(SCRIPT, "script");
TAG(SECTION, "section");
TAG(SELECT, "select");
TAG(SLOT, "slot");
TAG(SMALL, "small");
TAG(SPAN, "span");
TAG(STRONG, "strong");
TAG(STYLE, "style");
TAG(SUB, "sub");
TAG(SUMMARY, "summary");
TAG(SUP, "sup");
TAG(SVG, "svg");
TAG(TABLE, "table");
TAG(TBODY, "tbody");
TAG(TD, "td");
TAG(TEMPLATE, "template");
TAG(TEXTAREA, "textarea");
TAG(TFOOT, "tfoot");
TAG(TH, "th");
TAG(THEAD, "thead");
TAG(TIME, "time");
TAG(TITLE, "title");
TAG(TR, "tr");
TAG(U, "u");
TAG(UL, "ul");
TAG(VAR, "var");
TAG(VIDEO, "video");
// TAG(CUSTOM);
#undef TAG
}
2 changes: 1 addition & 1 deletion test/corpus/html.txt
Original file line number Diff line number Diff line change
@@ -138,7 +138,7 @@ Raw text elements
</style>

<script>
</SCRIPT>
</script>
---

(document
38 changes: 38 additions & 0 deletions test/corpus/svelte.txt
Original file line number Diff line number Diff line change
@@ -247,3 +247,41 @@ key statement
(text)
(key_end_expr
(special_block_keyword))))

=====================
testing
=====================
<Div>
<span>bar</span>
</Div>

<Input>
<span>bar</span>
</Input>
---------------------
(document
(element
(start_tag (tag_name))
(text)
(element
(start_tag (tag_name))
(text)
(end_tag (tag_name))
)
(text)
(end_tag (tag_name))
)
(text)
(element
(start_tag (tag_name))
(text)
(element
(start_tag (tag_name))
(text)
(end_tag (tag_name))
)
(text)
(end_tag (tag_name))
)
)

0 comments on commit 84d1a6a

Please sign in to comment.