tiny.smg.span
Defined in tiny.smg.
API (2)
Actions
Public operations.
Source
Source: tools/smg/src/root.zig:32
zig
pub const span = @import("span.zig");Source: tools/smg/src/span.zig
zig
const std = @import("std");const lines = @import("lines.zig");pub fn trimmed(source_lines: lines.SourceLines, line: i64, end_line: i64) []const u8 { const start_raw = lines.lineStartByte(source_lines, line); const end_raw = lines.lineEndByte(source_lines, end_line); if (start_raw >= end_raw) return ""; var start = start_raw; var end = end_raw; while (start < end and std.ascii.isWhitespace(source_lines.source[start])) start += 1; while (end > start and std.ascii.isWhitespace(source_lines.source[end - 1])) end -= 1; return source_lines.source[start..end];}pub fn startsWith(source_lines: lines.SourceLines, line: i64, end_line: i64, prefix: []const u8) bool { return std.mem.startsWith(u8, trimmed(source_lines, line, end_line), prefix);}test "trimmed span removes surrounding whitespace" { const source = " first\r\nsecond\n third"; var source_lines = try lines.SourceLines.init(std.testing.allocator, .{ .source = source }); defer source_lines.deinit(std.testing.allocator); source_lines.fill(); source_lines.activate(); try std.testing.expectEqualStrings("first", trimmed(source_lines, 1, 1)); try std.testing.expect(startsWith(source_lines, 3, 3, "third"));}Audit
| Definitions | 3 |
|---|---|
| Public names | 3 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |