tangled
alpha
login
or
join now
altagos.dev
/
pretty
0
fork
atom
A pretty printer for zig
zig
0
fork
atom
overview
issues
pulls
pipelines
pass runtime context as pointer
altagos.dev
1 month ago
f3bc70ac
5c3efbdc
verified
This commit was signed with the committer's
known signature
.
altagos.dev
SSH Key Fingerprint:
SHA256:UbTjEcCZlc6GzQWLCuDK3D//HESWD2xFPkzue9XMras=
+28
-16
1 changed file
expand all
collapse all
unified
split
pretty.zig
+28
-16
pretty.zig
···
86
86
global.tty.?.writer = w;
87
87
}
88
88
89
89
-
const rctx = RuntimeContext{
89
89
+
var rctx = RuntimeContext{
90
90
.out = w,
91
91
.tty = global.tty.?,
92
92
};
93
93
94
94
-
return innerFmt(T, cctx, rctx, this.value, .{});
94
94
+
return innerFmt(T, cctx, &rctx, this.value, .{});
95
95
}
96
96
};
97
97
}
···
104
104
105
105
indent_level: usize = 0,
106
106
107
107
-
pub inline fn print(this: RuntimeContext, comptime fmt: []const u8, args: anytype) error{WriteFailed}!void {
107
107
+
pub inline fn print(this: *const RuntimeContext, comptime fmt: []const u8, args: anytype) error{WriteFailed}!void {
108
108
return this.out.print(fmt, args);
109
109
}
110
110
111
111
-
pub inline fn write(this: RuntimeContext, text: []const u8) error{WriteFailed}!void {
111
111
+
pub inline fn write(this: *const RuntimeContext, text: []const u8) error{WriteFailed}!void {
112
112
return this.out.writeAll(text);
113
113
}
114
114
115
115
pub inline fn setColor(
116
116
-
this: RuntimeContext,
116
116
+
this: *const RuntimeContext,
117
117
comptime ctx: ComptimeContext,
118
118
color: Theme.Colors,
119
119
) void {
120
120
this.tty.setColor(ctx.options.theme.getColor(color)) catch {};
121
121
}
122
122
123
123
-
pub inline fn setColorRaw(this: RuntimeContext, color: Io.Terminal.Color) void {
123
123
+
pub inline fn setColorRaw(this: *const RuntimeContext, color: Io.Terminal.Color) void {
124
124
this.tty.setColor(color) catch {};
125
125
}
126
126
127
127
-
pub inline fn resetColor(this: RuntimeContext) void {
127
127
+
pub inline fn resetColor(this: *const RuntimeContext) void {
128
128
this.tty.setColor(.reset) catch {};
129
129
}
130
130
};
···
150
150
fn innerFmt(
151
151
comptime T: type,
152
152
comptime cctx: ComptimeContext,
153
153
-
rctx: RuntimeContext,
153
153
+
rctx: *RuntimeContext,
154
154
value: T,
155
155
opts: InnerFmtOptions,
156
156
) error{WriteFailed}!void {
···
188
188
inline fn printType(
189
189
comptime T: type,
190
190
comptime cctx: ComptimeContext,
191
191
-
rctx: RuntimeContext,
191
191
+
rctx: *RuntimeContext,
192
192
) error{WriteFailed}!void {
193
193
const active_type = comptime std.meta.activeTag(@typeInfo(T));
194
194
const excluded = comptime switch (active_type) {
···
208
208
}
209
209
}
210
210
211
211
-
inline fn formatBool(comptime cctx: ComptimeContext, rctx: RuntimeContext, value: bool) !void {
211
211
+
inline fn formatBool(
212
212
+
comptime cctx: ComptimeContext,
213
213
+
rctx: *const RuntimeContext,
214
214
+
value: bool,
215
215
+
) !void {
212
216
rctx.setColor(cctx, if (value) .true else .false);
213
217
try rctx.print("{}", .{value});
214
218
rctx.resetColor();
215
219
}
216
220
217
217
-
inline fn formatNull(comptime cctx: ComptimeContext, rctx: RuntimeContext) !void {
221
221
+
inline fn formatNull(comptime cctx: ComptimeContext, rctx: *const RuntimeContext) !void {
218
222
rctx.setColor(cctx, .null);
219
223
try rctx.write("null");
220
224
rctx.resetColor();
···
223
227
inline fn formatOptional(
224
228
comptime T: type,
225
229
comptime cctx: ComptimeContext,
226
226
-
rctx: RuntimeContext,
230
230
+
rctx: *RuntimeContext,
227
231
value: ?T,
228
232
) !void {
229
233
return if (value) |val|
···
236
240
comptime T: type,
237
241
comptime st: Type.Struct,
238
242
comptime cctx: ComptimeContext,
239
239
-
rctx: RuntimeContext,
243
243
+
rctx: *RuntimeContext,
240
244
value: T,
241
245
) !void {
242
246
const next_cctx = ComptimeContext{
···
273
277
}
274
278
}
275
279
276
276
-
inline fn formatType(comptime cctx: ComptimeContext, rctx: RuntimeContext, value: type) !void {
280
280
+
inline fn formatType(
281
281
+
comptime cctx: ComptimeContext,
282
282
+
rctx: *const RuntimeContext,
283
283
+
value: type,
284
284
+
) !void {
277
285
rctx.setColor(cctx, .type);
278
286
rctx.setColorRaw(.bold);
279
287
try rctx.write(@typeName(value));
280
288
rctx.resetColor();
281
289
}
282
290
283
283
-
inline fn formatValue(comptime cctx: ComptimeContext, rctx: RuntimeContext, value: anytype) !void {
291
291
+
inline fn formatValue(
292
292
+
comptime cctx: ComptimeContext,
293
293
+
rctx: *const RuntimeContext,
294
294
+
value: anytype,
295
295
+
) !void {
284
296
rctx.setColor(cctx, .value);
285
297
try rctx.print("{}", .{value});
286
298
rctx.resetColor();
287
299
}
288
300
289
289
-
inline fn indent(comptime cctx: ComptimeContext, rctx: RuntimeContext) void {
301
301
+
inline fn indent(comptime cctx: ComptimeContext, rctx: *const RuntimeContext) void {
290
302
if (cctx.options.inline_structs) return;
291
303
292
304
const text: [cctx.depth * cctx.options.indent_width]u8 = @splat(' ');