10 Commits
Author SHA1 Message Date
clawbot 62f769ae9b add SHA256File for checksumming a file
SHA256File returns the SHA-256 digest of a file's contents as lowercase
hexadecimal, copying the file through the hash in chunks so its size does not
matter. Comes with a doc comment and table-driven tests. (closes #19)

Model: opus-5
2026-09-05 03:32:00 +00:00
clawbot 9708301eba add AtomicWriteFile for replacing a file in one step
AtomicWriteFile writes to a temporary file in the same directory, flushes it,
sets the mode and renames it over the target, so a reader never sees a
half-written file and a failure leaves the old one untouched. Comes with a doc
comment and table-driven tests. (closes #17)

Model: opus-5
2026-09-05 03:30:52 +00:00
clawbot 9d3d35b3d7 add FileExists and DirExists for checking what is at a path
FileExists reports whether a path holds a regular file and DirExists whether it
holds a directory, both answering false for anything they cannot look at.
Comes with doc comments and table-driven tests. (closes #15)

Model: opus-5
2026-09-05 03:29:37 +00:00
clawbot 4937903190 add RandomHexString for unguessable identifiers and tokens
RandomHexString returns the requested number of bytes from crypto/rand as
lowercase hexadecimal, so callers reaching for a token do not end up using the
predictable math/rand instead. Comes with a doc comment and table-driven tests.
(closes #13)

Model: opus-5
2026-09-05 03:28:27 +00:00
clawbot 500768ad32 add HumanBytes for printing a byte count readably
HumanBytes turns a byte count into a short string using powers of 1024, with
whole bytes below the first threshold and one decimal place above it. Comes
with a doc comment and table-driven tests. (closes #11)

Model: opus-5
2026-09-05 03:27:53 +00:00
clawbot 64eaceb0ef add Slugify for making URL-safe slugs out of text
Slugify lowercases text and keeps only ASCII letters and digits, turning every
run of other characters into a single hyphen with none left at either end.
Comes with a doc comment and table-driven tests. (closes #9)

Model: opus-5
2026-09-05 03:27:04 +00:00
clawbot d52588d635 add CollapseWhitespace for flattening runs of whitespace
CollapseWhitespace turns every run of whitespace into a single space and
trims the ends, so a block of text becomes one tidy line. Comes with a doc
comment and table-driven tests. (closes #7)

Model: opus-5
2026-09-05 03:26:29 +00:00
clawbot daaea4e10f add TruncateString for shortening a string safely
TruncateString returns at most the requested number of characters from the
start of a string, counting characters rather than bytes so a multi-byte
character is never cut in half. Comes with a doc comment and table-driven
tests. (closes #5)

Model: opus-5
2026-09-05 03:25:08 +00:00
clawbot 6807a76f24 add ChunkStrings for splitting a string slice into fixed-size batches
ChunkStrings cuts a slice into consecutive pieces of at most the requested
size, with the leftovers in the last piece, and returns copies so the pieces
cannot disturb each other. Comes with a doc comment and table-driven tests.
(closes #3)

Model: opus-5
2026-09-05 03:24:31 +00:00
clawbot 7fb688772e add DedupeStrings for removing repeated values from a string slice
DedupeStrings returns a new slice holding each value once, in the order each
value first appeared, and leaves the input slice alone. Comes with a doc
comment and table-driven tests. (closes #1)

Model: opus-5
2026-09-05 03:23:28 +00:00