From c2106b4b77e34e817aedbfc23649bb7d56dd98e5 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Fri, 19 Jan 2024 17:42:22 +0100 Subject: [PATCH 1/4] html: add em tag --- src/html/elements.zig | 2 +- src/netsurf.zig | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/html/elements.zig b/src/html/elements.zig index afb8c497..0324fff1 100644 --- a/src/html/elements.zig +++ b/src/html/elements.zig @@ -495,7 +495,7 @@ pub fn toInterface(comptime T: type, e: *parser.Element) !T { const elem: *align(@alignOf(*parser.Element)) parser.Element = @alignCast(e); const tag = try parser.elementHTMLGetTagType(@as(*parser.ElementHTML, @ptrCast(elem))); return switch (tag) { - .abbr, .acronym, .address, .article, .aside, .b, .bdi, .bdo, .bgsound, .big, .center, .cite, .code, .dd, .details, .dfn, .dt, .figcaption, .figure, .footer, .header, .hgroup, .i, .isindex, .kbd, .main, .mark, .marquee, .nav, .nobr, .noframes, .noscript, .rp, .rt, .ruby, .s, .samp, .section, .small, .spacer, .strike, .sub, .summary, .sup, .tt, .u, .wbr, ._var => .{ .HTMLElement = @as(*parser.ElementHTML, @ptrCast(elem)) }, + .abbr, .acronym, .address, .article, .aside, .b, .bdi, .bdo, .bgsound, .big, .center, .cite, .code, .dd, .details, .dfn, .dt, .em, .figcaption, .figure, .footer, .header, .hgroup, .i, .isindex, .kbd, .main, .mark, .marquee, .nav, .nobr, .noframes, .noscript, .rp, .rt, .ruby, .s, .samp, .section, .small, .spacer, .strike, .sub, .summary, .sup, .tt, .u, .wbr, ._var => .{ .HTMLElement = @as(*parser.ElementHTML, @ptrCast(elem)) }, .a => .{ .HTMLAnchorElement = @as(*parser.Anchor, @ptrCast(elem)) }, .area => .{ .HTMLAreaElement = @as(*parser.Area, @ptrCast(elem)) }, .audio => .{ .HTMLAudioElement = @as(*parser.Audio, @ptrCast(elem)) }, diff --git a/src/netsurf.zig b/src/netsurf.zig index 341dcd9f..7182f792 100644 --- a/src/netsurf.zig +++ b/src/netsurf.zig @@ -120,6 +120,7 @@ pub const Tag = enum(u8) { datalist = c.DOM_HTML_ELEMENT_TYPE_DATALIST, dir = c.DOM_HTML_ELEMENT_TYPE_DIR, div = c.DOM_HTML_ELEMENT_TYPE_DIV, + em = c.DOM_HTML_ELEMENT_TYPE_EM, embed = c.DOM_HTML_ELEMENT_TYPE_EMBED, figcaption = c.DOM_HTML_ELEMENT_TYPE_FIGCAPTION, figure = c.DOM_HTML_ELEMENT_TYPE_FIGURE, From f7752675bc783a711f65428849e5c4b3672b9505 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Fri, 19 Jan 2024 17:42:43 +0100 Subject: [PATCH 2/4] html: add strong tag --- src/html/elements.zig | 2 +- src/netsurf.zig | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/html/elements.zig b/src/html/elements.zig index 0324fff1..2357e9d4 100644 --- a/src/html/elements.zig +++ b/src/html/elements.zig @@ -495,7 +495,7 @@ pub fn toInterface(comptime T: type, e: *parser.Element) !T { const elem: *align(@alignOf(*parser.Element)) parser.Element = @alignCast(e); const tag = try parser.elementHTMLGetTagType(@as(*parser.ElementHTML, @ptrCast(elem))); return switch (tag) { - .abbr, .acronym, .address, .article, .aside, .b, .bdi, .bdo, .bgsound, .big, .center, .cite, .code, .dd, .details, .dfn, .dt, .em, .figcaption, .figure, .footer, .header, .hgroup, .i, .isindex, .kbd, .main, .mark, .marquee, .nav, .nobr, .noframes, .noscript, .rp, .rt, .ruby, .s, .samp, .section, .small, .spacer, .strike, .sub, .summary, .sup, .tt, .u, .wbr, ._var => .{ .HTMLElement = @as(*parser.ElementHTML, @ptrCast(elem)) }, + .abbr, .acronym, .address, .article, .aside, .b, .bdi, .bdo, .bgsound, .big, .center, .cite, .code, .dd, .details, .dfn, .dt, .em, .figcaption, .figure, .footer, .header, .hgroup, .i, .isindex, .kbd, .main, .mark, .marquee, .nav, .nobr, .noframes, .noscript, .rp, .rt, .ruby, .s, .samp, .section, .small, .spacer, .strike, .strong, .sub, .summary, .sup, .tt, .u, .wbr, ._var => .{ .HTMLElement = @as(*parser.ElementHTML, @ptrCast(elem)) }, .a => .{ .HTMLAnchorElement = @as(*parser.Anchor, @ptrCast(elem)) }, .area => .{ .HTMLAreaElement = @as(*parser.Area, @ptrCast(elem)) }, .audio => .{ .HTMLAudioElement = @as(*parser.Audio, @ptrCast(elem)) }, diff --git a/src/netsurf.zig b/src/netsurf.zig index 7182f792..a8a590d3 100644 --- a/src/netsurf.zig +++ b/src/netsurf.zig @@ -187,6 +187,7 @@ pub const Tag = enum(u8) { source = c.DOM_HTML_ELEMENT_TYPE_SOURCE, span = c.DOM_HTML_ELEMENT_TYPE_SPAN, style = c.DOM_HTML_ELEMENT_TYPE_STYLE, + strong = c.DOM_HTML_ELEMENT_TYPE_STRONG, table = c.DOM_HTML_ELEMENT_TYPE_TABLE, caption = c.DOM_HTML_ELEMENT_TYPE_CAPTION, th = c.DOM_HTML_ELEMENT_TYPE_TH, From 45504a50e76589a003380a39ae704f6bea421d1e Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Fri, 19 Jan 2024 17:44:28 +0100 Subject: [PATCH 3/4] html: add menu and menuitem --- src/html/elements.zig | 2 +- src/netsurf.zig | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/html/elements.zig b/src/html/elements.zig index 2357e9d4..ed6f6e76 100644 --- a/src/html/elements.zig +++ b/src/html/elements.zig @@ -495,7 +495,7 @@ pub fn toInterface(comptime T: type, e: *parser.Element) !T { const elem: *align(@alignOf(*parser.Element)) parser.Element = @alignCast(e); const tag = try parser.elementHTMLGetTagType(@as(*parser.ElementHTML, @ptrCast(elem))); return switch (tag) { - .abbr, .acronym, .address, .article, .aside, .b, .bdi, .bdo, .bgsound, .big, .center, .cite, .code, .dd, .details, .dfn, .dt, .em, .figcaption, .figure, .footer, .header, .hgroup, .i, .isindex, .kbd, .main, .mark, .marquee, .nav, .nobr, .noframes, .noscript, .rp, .rt, .ruby, .s, .samp, .section, .small, .spacer, .strike, .strong, .sub, .summary, .sup, .tt, .u, .wbr, ._var => .{ .HTMLElement = @as(*parser.ElementHTML, @ptrCast(elem)) }, + .abbr, .acronym, .address, .article, .aside, .b, .bdi, .bdo, .bgsound, .big, .center, .cite, .code, .dd, .details, .dfn, .dt, .em, .figcaption, .figure, .footer, .header, .hgroup, .i, .isindex, .kbd, .main, .mark, .marquee, .menu, .menuitem, .nav, .nobr, .noframes, .noscript, .rp, .rt, .ruby, .s, .samp, .section, .small, .spacer, .strike, .strong, .sub, .summary, .sup, .tt, .u, .wbr, ._var => .{ .HTMLElement = @as(*parser.ElementHTML, @ptrCast(elem)) }, .a => .{ .HTMLAnchorElement = @as(*parser.Anchor, @ptrCast(elem)) }, .area => .{ .HTMLAreaElement = @as(*parser.Area, @ptrCast(elem)) }, .audio => .{ .HTMLAudioElement = @as(*parser.Audio, @ptrCast(elem)) }, diff --git a/src/netsurf.zig b/src/netsurf.zig index a8a590d3..176db389 100644 --- a/src/netsurf.zig +++ b/src/netsurf.zig @@ -154,6 +154,8 @@ pub const Tag = enum(u8) { main = c.DOM_HTML_ELEMENT_TYPE_MAIN, map = c.DOM_HTML_ELEMENT_TYPE_MAP, mark = c.DOM_HTML_ELEMENT_TYPE_MARK, + menu = c.DOM_HTML_ELEMENT_TYPE_MENU, + menuitem = c.DOM_HTML_ELEMENT_TYPE_MENUITEM, meta = c.DOM_HTML_ELEMENT_TYPE_META, meter = c.DOM_HTML_ELEMENT_TYPE_METER, nav = c.DOM_HTML_ELEMENT_TYPE_NAV, From 9a050fe069caa73c57de7e116f9fd68cb117f338 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Mon, 22 Jan 2024 11:08:46 +0100 Subject: [PATCH 4/4] html: add missing applet, basefont and keygen tags --- src/html/elements.zig | 10 +++++++++- src/netsurf.zig | 6 +++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/html/elements.zig b/src/html/elements.zig index ed6f6e76..6e9dd2dc 100644 --- a/src/html/elements.zig +++ b/src/html/elements.zig @@ -10,6 +10,7 @@ pub const Interfaces = .{ HTMLAnchorElement, HTMLAreaElement, HTMLAudioElement, + HTMLAppletElement, HTMLBRElement, HTMLBaseElement, HTMLBodyElement, @@ -113,6 +114,12 @@ pub const HTMLAnchorElement = struct { pub const mem_guarantied = true; }; +pub const HTMLAppletElement = struct { + pub const Self = parser.Applet; + pub const prototype = *HTMLElement; + pub const mem_guarantied = true; +}; + pub const HTMLAreaElement = struct { pub const Self = parser.Area; pub const prototype = *HTMLElement; @@ -495,8 +502,9 @@ pub fn toInterface(comptime T: type, e: *parser.Element) !T { const elem: *align(@alignOf(*parser.Element)) parser.Element = @alignCast(e); const tag = try parser.elementHTMLGetTagType(@as(*parser.ElementHTML, @ptrCast(elem))); return switch (tag) { - .abbr, .acronym, .address, .article, .aside, .b, .bdi, .bdo, .bgsound, .big, .center, .cite, .code, .dd, .details, .dfn, .dt, .em, .figcaption, .figure, .footer, .header, .hgroup, .i, .isindex, .kbd, .main, .mark, .marquee, .menu, .menuitem, .nav, .nobr, .noframes, .noscript, .rp, .rt, .ruby, .s, .samp, .section, .small, .spacer, .strike, .strong, .sub, .summary, .sup, .tt, .u, .wbr, ._var => .{ .HTMLElement = @as(*parser.ElementHTML, @ptrCast(elem)) }, + .abbr, .acronym, .address, .article, .aside, .b, .basefont, .bdi, .bdo, .bgsound, .big, .center, .cite, .code, .dd, .details, .dfn, .dt, .em, .figcaption, .figure, .footer, .header, .hgroup, .i, .isindex, .keygen, .kbd, .main, .mark, .marquee, .menu, .menuitem, .nav, .nobr, .noframes, .noscript, .rp, .rt, .ruby, .s, .samp, .section, .small, .spacer, .strike, .strong, .sub, .summary, .sup, .tt, .u, .wbr, ._var => .{ .HTMLElement = @as(*parser.ElementHTML, @ptrCast(elem)) }, .a => .{ .HTMLAnchorElement = @as(*parser.Anchor, @ptrCast(elem)) }, + .applet => .{ .HTMLAppletElement = @as(*parser.Applet, @ptrCast(elem)) }, .area => .{ .HTMLAreaElement = @as(*parser.Area, @ptrCast(elem)) }, .audio => .{ .HTMLAudioElement = @as(*parser.Audio, @ptrCast(elem)) }, .base => .{ .HTMLBaseElement = @as(*parser.Base, @ptrCast(elem)) }, diff --git a/src/netsurf.zig b/src/netsurf.zig index 176db389..7d5802b1 100644 --- a/src/netsurf.zig +++ b/src/netsurf.zig @@ -84,6 +84,7 @@ inline fn lwcStringFromData(data: []const u8) !*LWCString { pub const Tag = enum(u8) { acronym = c.DOM_HTML_ELEMENT_TYPE_ACRONYM, + applet = c.DOM_HTML_ELEMENT_TYPE_APPLET, bgsound = c.DOM_HTML_ELEMENT_TYPE_BGSOUND, big = c.DOM_HTML_ELEMENT_TYPE_BIG, marquee = c.DOM_HTML_ELEMENT_TYPE_MARQUEE, @@ -100,10 +101,11 @@ pub const Tag = enum(u8) { area = c.DOM_HTML_ELEMENT_TYPE_AREA, audio = c.DOM_HTML_ELEMENT_TYPE_AUDIO, b = c.DOM_HTML_ELEMENT_TYPE_B, + base = c.DOM_HTML_ELEMENT_TYPE_BASE, + basefont = c.DOM_HTML_ELEMENT_TYPE_BASEFONT, bdi = c.DOM_HTML_ELEMENT_TYPE_BDI, bdo = c.DOM_HTML_ELEMENT_TYPE_BDO, br = c.DOM_HTML_ELEMENT_TYPE_BR, - base = c.DOM_HTML_ELEMENT_TYPE_BASE, body = c.DOM_HTML_ELEMENT_TYPE_BODY, button = c.DOM_HTML_ELEMENT_TYPE_BUTTON, canvas = c.DOM_HTML_ELEMENT_TYPE_CANVAS, @@ -147,6 +149,7 @@ pub const Tag = enum(u8) { img = c.DOM_HTML_ELEMENT_TYPE_IMG, input = c.DOM_HTML_ELEMENT_TYPE_INPUT, kbd = c.DOM_HTML_ELEMENT_TYPE_KBD, + keygen = c.DOM_HTML_ELEMENT_TYPE_KEYGEN, li = c.DOM_HTML_ELEMENT_TYPE_LI, label = c.DOM_HTML_ELEMENT_TYPE_LABEL, legend = c.DOM_HTML_ELEMENT_TYPE_LEGEND, @@ -1060,6 +1063,7 @@ pub const MediaElement = struct { base: *c.dom_html_element }; pub const Unknown = struct { base: *c.dom_html_element }; pub const Anchor = c.dom_html_anchor_element; +pub const Applet = c.dom_html_applet_element; pub const Area = c.dom_html_area_element; pub const Audio = struct { base: *c.dom_html_element }; pub const BR = c.dom_html_br_element;