mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-23 05:04:42 +00:00
Add support strikethrough and task lists in Markdown
This commit is contained in:
@@ -141,6 +141,10 @@ fn renderElement(el: *Element, state: *State, writer: *std.Io.Writer, page: *Pag
|
|||||||
try writer.writeAll("*");
|
try writer.writeAll("*");
|
||||||
state.last_char_was_newline = false;
|
state.last_char_was_newline = false;
|
||||||
},
|
},
|
||||||
|
.s, .del => {
|
||||||
|
try writer.writeAll("~~");
|
||||||
|
state.last_char_was_newline = false;
|
||||||
|
},
|
||||||
.hr => {
|
.hr => {
|
||||||
try writer.writeAll("---\n");
|
try writer.writeAll("---\n");
|
||||||
state.last_char_was_newline = true;
|
state.last_char_was_newline = true;
|
||||||
@@ -168,6 +172,19 @@ fn renderElement(el: *Element, state: *State, writer: *std.Io.Writer, page: *Pag
|
|||||||
try writer.writeByte('[');
|
try writer.writeByte('[');
|
||||||
state.last_char_was_newline = false;
|
state.last_char_was_newline = false;
|
||||||
},
|
},
|
||||||
|
.input => {
|
||||||
|
if (el.getAttributeSafe(comptime .wrap("type"))) |t| {
|
||||||
|
if (std.mem.eql(u8, t, "checkbox")) {
|
||||||
|
if (el.hasAttributeSafe(comptime .wrap("checked"))) {
|
||||||
|
try writer.writeAll("[x] ");
|
||||||
|
} else {
|
||||||
|
try writer.writeAll("[ ] ");
|
||||||
|
}
|
||||||
|
state.last_char_was_newline = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return; // Void element
|
||||||
|
},
|
||||||
else => {},
|
else => {},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,6 +226,10 @@ fn renderElement(el: *Element, state: *State, writer: *std.Io.Writer, page: *Pag
|
|||||||
try writer.writeAll("*");
|
try writer.writeAll("*");
|
||||||
state.last_char_was_newline = false;
|
state.last_char_was_newline = false;
|
||||||
},
|
},
|
||||||
|
.s, .del => {
|
||||||
|
try writer.writeAll("~~");
|
||||||
|
state.last_char_was_newline = false;
|
||||||
|
},
|
||||||
.blockquote => {
|
.blockquote => {
|
||||||
state.in_blockquote = false;
|
state.in_blockquote = false;
|
||||||
},
|
},
|
||||||
@@ -384,3 +405,46 @@ test "markdown: escaping" {
|
|||||||
|
|
||||||
try testing.expectString("\n\\# Not a header\n", aw.written());
|
try testing.expectString("\n\\# Not a header\n", aw.written());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test "markdown: strikethrough" {
|
||||||
|
const testing = @import("../testing.zig");
|
||||||
|
const page = try testing.test_session.createPage();
|
||||||
|
defer testing.test_session.removePage();
|
||||||
|
const doc = page.window._document;
|
||||||
|
|
||||||
|
const div = try doc.createElement("div", null, page);
|
||||||
|
|
||||||
|
const s = try doc.createElement("s", null, page);
|
||||||
|
try s.asNode().setTextContent("deleted", page);
|
||||||
|
_ = try div.asNode().appendChild(s.asNode(), page);
|
||||||
|
|
||||||
|
var aw = std.Io.Writer.Allocating.init(testing.allocator);
|
||||||
|
defer aw.deinit();
|
||||||
|
try dump(div.asNode(), .{}, &aw.writer, page);
|
||||||
|
|
||||||
|
try testing.expectString("~~deleted~~\n", aw.written());
|
||||||
|
}
|
||||||
|
|
||||||
|
test "markdown: task list" {
|
||||||
|
const testing = @import("../testing.zig");
|
||||||
|
const page = try testing.test_session.createPage();
|
||||||
|
defer testing.test_session.removePage();
|
||||||
|
const doc = page.window._document;
|
||||||
|
|
||||||
|
const div = try doc.createElement("div", null, page);
|
||||||
|
|
||||||
|
const input1 = try doc.createElement("input", null, page);
|
||||||
|
try input1.setAttributeSafe(comptime .wrap("type"), .wrap("checkbox"), page);
|
||||||
|
try input1.setAttributeSafe(comptime .wrap("checked"), .wrap(""), page);
|
||||||
|
_ = try div.asNode().appendChild(input1.asNode(), page);
|
||||||
|
|
||||||
|
const input2 = try doc.createElement("input", null, page);
|
||||||
|
try input2.setAttributeSafe(comptime .wrap("type"), .wrap("checkbox"), page);
|
||||||
|
_ = try div.asNode().appendChild(input2.asNode(), page);
|
||||||
|
|
||||||
|
var aw = std.Io.Writer.Allocating.init(testing.allocator);
|
||||||
|
defer aw.deinit();
|
||||||
|
try dump(div.asNode(), .{}, &aw.writer, page);
|
||||||
|
|
||||||
|
try testing.expectString("[x] [ ] \n", aw.written());
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user