tiny.pretty.Builder
Defined in tiny.pretty.
API (16)
Actions
Public operations.
concatemptygroupinitjoinnestpunctspacesstylestyledFmtstyledTextstyledWordstexttextFmtwords
Fields and members
Public fields and members.
Source
Source: lib/pretty/core/src/builder.zig:9
zig
pub const Builder = struct { allocator: std.mem.Allocator, pub fn init(allocator: std.mem.Allocator) Builder { return .{ .allocator = allocator }; } pub fn empty(_: Builder) Doc { return .empty; } pub fn text(_: Builder, bytes: []const u8) Doc { if (bytes.len == 0) return .empty; return .{ .text = bytes }; } pub fn textFmt( self: Builder, comptime fmt: []const u8, args: anytype, ) std.mem.Allocator.Error!Doc { return .{ .text = try std.fmt.allocPrint(self.allocator, fmt, args) }; } pub fn spaces( self: Builder, amount: usize, ) std.mem.Allocator.Error!Doc { if (amount == 0) return self.empty(); const bytes = try self.allocator.alloc(u8, amount); @memset(bytes, ' '); return self.text(bytes); } pub fn concat( self: Builder, parts: []const Doc, ) std.mem.Allocator.Error!Doc { if (parts.len == 0) return .empty; if (parts.len == 1) return parts[0]; return .{ .concat = try self.allocator.dupe(Doc, parts) }; } pub fn nest( self: Builder, amount: usize, doc: Doc, ) std.mem.Allocator.Error!Doc { if (amount == 0) return doc; const owned = try self.allocator.create(Doc); owned.* = doc; return .{ .nest = .{ .amount = amount, .doc = owned } }; } pub fn group( self: Builder, doc: Doc, ) std.mem.Allocator.Error!Doc { const owned = try self.allocator.create(Doc); owned.* = doc; return .{ .group = owned }; } pub fn style( self: Builder, style_kind: Style, doc: Doc, ) std.mem.Allocator.Error!Doc { if (style_kind == .plain) return doc; const owned = try self.allocator.create(Doc); owned.* = doc; return .{ .styled = .{ .style = style_kind, .doc = owned } }; } pub fn styledText( self: Builder, style_kind: Style, bytes: []const u8, ) std.mem.Allocator.Error!Doc { return try self.style(style_kind, self.text(bytes)); } pub fn styledFmt( self: Builder, style_kind: Style, comptime fmt: []const u8, args: anytype, ) std.mem.Allocator.Error!Doc { return try self.style(style_kind, try self.textFmt(fmt, args)); } pub fn words( self: Builder, bytes: []const u8, ) std.mem.Allocator.Error!Doc { var parts: std.ArrayListUnmanaged(Doc) = .empty; defer parts.deinit(self.allocator); var line_start = true; var index: usize = 0; while (index < bytes.len) { while (index < bytes.len) : (index += 1) { switch (bytes[index]) { ' ', '\t', '\r' => {}, '\n' => { try parts.append(self.allocator, hardline); line_start = true; }, else => break, } } if (index >= bytes.len) break; const word_start = index; while (index < bytes.len and bytes[index] != ' ' and bytes[index] != '\t' and bytes[index] != '\r' and bytes[index] != '\n') : (index += 1) {} const word = self.text(bytes[word_start..index]); if (line_start) { try parts.append(self.allocator, word); line_start = false; } else { try parts.append(self.allocator, try self.group(try self.concat(&.{ softline, word, }))); } } return try self.concat(parts.items); } pub fn styledWords( self: Builder, style_kind: Style, bytes: []const u8, ) std.mem.Allocator.Error!Doc { return try self.style(style_kind, try self.words(bytes)); } pub fn punct( self: Builder, bytes: []const u8, ) std.mem.Allocator.Error!Doc { return try self.styledText(.punctuation, bytes); } pub fn join( self: Builder, items: []const Doc, separator: Doc, ) std.mem.Allocator.Error!Doc { if (items.len == 0) return self.empty(); if (items.len == 1) return items[0]; const parts = try self.allocator.alloc(Doc, items.len * 2 - 1); var index: usize = 0; for (items, 0..) |item, item_index| { if (item_index != 0) { parts[index] = separator; index += 1; } parts[index] = item; index += 1; } return .{ .concat = parts }; }};Source: lib/pretty/core/src/root.zig:121
zig
pub const Builder = builder_product.Builder;Complete caller list for Builder.concat
19 direct callers.
tiny.pretty.Builder.words[method] atlib/pretty/core/src/builder.zig:100tiny.pretty.diagnostic.Report.doc[method] atlib/pretty/core/src/diagnostic.zig:63tiny.pretty.diagnostic.Report.field[method] atlib/pretty/core/src/diagnostic.zig:31tiny.pretty.diagnostic.Report.line[method] atlib/pretty/core/src/diagnostic.zig:51lib.pretty.core.src.test.expectResetComposition[function] — private source atlib/pretty/core/src/test.zig:402in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_builder_helpers_standardize_styled_punctuation_and_joins[function] — test source atlib/pretty/core/src/test.zig:244in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_continuation_text_fits_its_prefix_before_a_line_reset[function] — test source atlib/pretty/core/src/test.zig:181in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_embedded_text_line_reset_composes_with_later_group[function] — test source atlib/pretty/core/src/test.zig:383in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_group_breaks_soft_breaks_when_it_does_not_fit[function] — test source atlib/pretty/core/src/test.zig:66in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_group_fit_includes_the_same-line_continuation[function] — test source atlib/pretty/core/src/test.zig:96in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_group_keeps_soft_breaks_flat_when_it_fits[function] — test source atlib/pretty/core/src/test.zig:41in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_hardline_stays_hard_inside_a_flat_group[function] — test source atlib/pretty/core/src/test.zig:141in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_nested_indentation_rejects_contextual_overflow_before_nested_output[function] — test source atlib/pretty/core/src/test.zig:355in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_nested_styled_docs_restore_the_outer_ANSI_style[function] — test source atlib/pretty/core/src/test.zig:219in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_newline-bearing_flat_alternatives_stay_broken[function] — test source atlib/pretty/core/src/test.zig:448in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_sibling_hardline_ends_group_continuation_fit[function] — test source atlib/pretty/core/src/test.zig:164in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_styled_docs_emit_ANSI_without_changing_fit_width[function] — test source atlib/pretty/core/src/test.zig:197in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_unavoidable_width_overflow_remains_renderable[function] — test source atlib/pretty/core/src/test.zig:113in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_writeWithState_uses_caller_column_and_break_indentation[function] — test source atlib/pretty/core/src/test.zig:330in nearest public ownerlib.pretty.core.src.test
Complete caller list for Builder.group
14 direct callers.
tiny.pretty.Builder.words[method] atlib/pretty/core/src/builder.zig:100lib.pretty.core.src.test.expectResetComposition[function] — private source atlib/pretty/core/src/test.zig:402in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_builder_helpers_standardize_styled_punctuation_and_joins[function] — test source atlib/pretty/core/src/test.zig:244in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_continuation_text_fits_its_prefix_before_a_line_reset[function] — test source atlib/pretty/core/src/test.zig:181in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_embedded_text_line_reset_composes_with_later_group[function] — test source atlib/pretty/core/src/test.zig:383in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_group_breaks_soft_breaks_when_it_does_not_fit[function] — test source atlib/pretty/core/src/test.zig:66in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_group_fit_includes_the_same-line_continuation[function] — test source atlib/pretty/core/src/test.zig:96in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_group_keeps_soft_breaks_flat_when_it_fits[function] — test source atlib/pretty/core/src/test.zig:41in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_hardline_stays_hard_inside_a_flat_group[function] — test source atlib/pretty/core/src/test.zig:141in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_newline-bearing_flat_alternatives_stay_broken[function] — test source atlib/pretty/core/src/test.zig:448in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_sibling_hardline_ends_group_continuation_fit[function] — test source atlib/pretty/core/src/test.zig:164in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_styled_docs_emit_ANSI_without_changing_fit_width[function] — test source atlib/pretty/core/src/test.zig:197in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_unavoidable_width_overflow_remains_renderable[function] — test source atlib/pretty/core/src/test.zig:113in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_writeWithState_uses_caller_column_and_break_indentation[function] — test source atlib/pretty/core/src/test.zig:330in nearest public ownerlib.pretty.core.src.test
Complete caller list for Builder.text
18 direct callers.
tiny.pretty.Builder.spaces[method] atlib/pretty/core/src/builder.zig:33tiny.pretty.Builder.styledText[method] atlib/pretty/core/src/builder.zig:83tiny.pretty.Builder.words[method] atlib/pretty/core/src/builder.zig:100tiny.pretty.diagnostic.Report.line[method] atlib/pretty/core/src/diagnostic.zig:51lib.pretty.core.src.test.expectResetComposition[function] — private source atlib/pretty/core/src/test.zig:402in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_continuation_text_fits_its_prefix_before_a_line_reset[function] — test source atlib/pretty/core/src/test.zig:181in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_embedded_text_line_reset_composes_with_later_group[function] — test source atlib/pretty/core/src/test.zig:383in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_group_breaks_soft_breaks_when_it_does_not_fit[function] — test source atlib/pretty/core/src/test.zig:66in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_group_fit_includes_the_same-line_continuation[function] — test source atlib/pretty/core/src/test.zig:96in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_group_keeps_soft_breaks_flat_when_it_fits[function] — test source atlib/pretty/core/src/test.zig:41in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_hardline_stays_hard_inside_a_flat_group[function] — test source atlib/pretty/core/src/test.zig:141in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_nested_indentation_rejects_contextual_overflow_before_nested_output[function] — test source atlib/pretty/core/src/test.zig:355in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_nested_styled_docs_restore_the_outer_ANSI_style[function] — test source atlib/pretty/core/src/test.zig:219in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_newline-bearing_flat_alternatives_stay_broken[function] — test source atlib/pretty/core/src/test.zig:448in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_sibling_hardline_ends_group_continuation_fit[function] — test source atlib/pretty/core/src/test.zig:164in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_styled_docs_emit_ANSI_without_changing_fit_width[function] — test source atlib/pretty/core/src/test.zig:197in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_unavoidable_width_overflow_remains_renderable[function] — test source atlib/pretty/core/src/test.zig:113in nearest public ownerlib.pretty.core.src.testlib.pretty.core.src.test.test_writeWithState_uses_caller_column_and_break_indentation[function] — test source atlib/pretty/core/src/test.zig:330in nearest public ownerlib.pretty.core.src.test
Audit
| Definitions | 16 |
|---|---|
| Public names | 16 |
| Members | 1 |
| Version | 26.7.0 |
| Revision | daab053ee433 |