mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-02-04 06:23:45 +00:00
axnode: encode json string into stripWhitespaces
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const Allocator = std.mem.Allocator;
|
const Allocator = std.mem.Allocator;
|
||||||
|
const jsonStringify = std.json.Stringify;
|
||||||
|
|
||||||
const log = @import("../log.zig");
|
const log = @import("../log.zig");
|
||||||
const Page = @import("../browser/Page.zig");
|
const Page = @import("../browser/Page.zig");
|
||||||
@@ -988,6 +989,7 @@ fn writeString(s: []const u8, w: anytype) !void {
|
|||||||
w.endWriteRaw();
|
w.endWriteRaw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// string written is json encoded.
|
||||||
fn stripWhitespaces(s: []const u8, writer: anytype) !void {
|
fn stripWhitespaces(s: []const u8, writer: anytype) !void {
|
||||||
var start: usize = 0;
|
var start: usize = 0;
|
||||||
var prev_w: ?bool = null;
|
var prev_w: ?bool = null;
|
||||||
@@ -1008,7 +1010,7 @@ fn stripWhitespaces(s: []const u8, writer: anytype) !void {
|
|||||||
// Starting here, the chunk changed.
|
// Starting here, the chunk changed.
|
||||||
if (is_w) {
|
if (is_w) {
|
||||||
// We have a chunk of non-whitespaces, we write it as it.
|
// We have a chunk of non-whitespaces, we write it as it.
|
||||||
try writer.writeAll(s[start..i]);
|
try jsonStringify.encodeJsonStringChars(s[start..i], .{}, writer);
|
||||||
} else {
|
} else {
|
||||||
// We have a chunk of whitespaces, replace with one space,
|
// We have a chunk of whitespaces, replace with one space,
|
||||||
// depending the position.
|
// depending the position.
|
||||||
@@ -1023,7 +1025,7 @@ fn stripWhitespaces(s: []const u8, writer: anytype) !void {
|
|||||||
// Write the reminder chunk.
|
// Write the reminder chunk.
|
||||||
if (!is_w) {
|
if (!is_w) {
|
||||||
// last chunk is non whitespaces.
|
// last chunk is non whitespaces.
|
||||||
try writer.writeAll(s[start..]);
|
try jsonStringify.encodeJsonStringChars(s[start..], .{}, writer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1045,6 +1047,8 @@ test "AXnode: stripWhitespaces" {
|
|||||||
.{ .value = " foo bar ", .expected = "foo bar" },
|
.{ .value = " foo bar ", .expected = "foo bar" },
|
||||||
.{ .value = "foo\n\tbar", .expected = "foo bar" },
|
.{ .value = "foo\n\tbar", .expected = "foo bar" },
|
||||||
.{ .value = "\tfoo bar baz \t\n yeah\r\n", .expected = "foo bar baz yeah" },
|
.{ .value = "\tfoo bar baz \t\n yeah\r\n", .expected = "foo bar baz yeah" },
|
||||||
|
// string must be json encoded.
|
||||||
|
.{ .value = "\"foo\"", .expected = "\\\"foo\\\"" },
|
||||||
};
|
};
|
||||||
|
|
||||||
var buffer = std.io.Writer.Allocating.init(allocator);
|
var buffer = std.io.Writer.Allocating.init(allocator);
|
||||||
|
|||||||
Reference in New Issue
Block a user