feature. See also
. The project being documented here (as the example) is the Zig library itself.
Render.renderSlice
fn renderSlice(
r: *Render,
slice_node: Ast.Node.Index,
slice: Ast.full.Slice,
space: Space,
) Error!void
File
Code
fn renderSlice(
r: *Render,
slice_node: Ast.Node.Index,
slice: Ast.full.Slice,
space: Space,
) Error!void {
const tree = r.tree;
const space_around_dots = nodeCausesSliceOpSpace(tree.nodeTag(slice.ast.start)) or
if (slice.ast.end.unwrap()) |end| nodeCausesSliceOpSpace(tree.nodeTag(end)) else false;
const after_start_space: Space = if (space_around_dots) .space else .none;
const before_sentinel_space: Space = if (slice.ast.sentinel != .none) .space else .none;
const after_dots_space: Space = if (slice.ast.end != .none)
if (space_around_dots) .maybe_space else .none
else
before_sentinel_space;
try renderExpression(r, slice.ast.sliced, .none);
try renderToken(r, slice.ast.lbracket, .none);
const start_last = tree.lastToken(slice.ast.start);
try renderExpression(r, slice.ast.start, after_start_space);
try renderToken(r, start_last + 1, after_dots_space);
if (slice.ast.end.unwrap()) |end| {
try renderExpression(r, end, before_sentinel_space);
}
if (slice.ast.sentinel.unwrap()) |sentinel| {
try renderToken(r, tree.firstToken(sentinel) - 1, .none);
try renderExpression(r, sentinel, .none);
}
try renderToken(r, tree.lastToken(slice_node), space);
}