Add snippet method/SDK tests, Perl RecsSDK, and install-manpages command#96
Merged
benbernard merged 4 commits intomasterfrom Feb 25, 2026
Merged
Conversation
Add comprehensive tests for method calls on {{}} expanded values and
record SDK methods across all three languages (JS, Python, Perl).
Change Perl RecsSDK to bless the data hash directly (like the original
App::RecordStream::Record) so $r is now a RecsSDK object with both
direct hash access ($r->{field}) and SDK methods ($r->get("a/b"),
$r->set(), $r->has()).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Performance Benchmark Results
103 benchmarks: 15 faster, 14 slower, 74 within noise (10%)
Full benchmark resultsJSON Parsing
JSON Serialization
KeySpec Access
Core Operations
Pipeline Overhead
Record Creation & Serialization
Chain vs Pipe
Line Reading
|
Add missing core record manipulation methods to bring Python and Perl snippet SDKs to parity with the JS Record API. Also adds keys() to the Perl SDK. Includes tests for all new methods in both languages. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Man pages were committed to man/man1/ and regenerated every test run, causing constant git status noise from date-stamp changes. Now they are gitignored and generated on demand. - Extract generateManPages(outDir) from scripts/generate-manpages.ts - Add `recs install-manpages` subcommand that installs to ~/.local/share/man/man1/ - Update manpages.test.ts to use a temp directory instead of repo man/ - Add man/ to .gitignore and untrack existing files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
{{}}expanded values (.toFixed(),.upper(),sprintf(), etc.) across JS, Python, and Perlr.get(),r.set(),r.has(),r.keys(), etc.) in all three languages$ra blessed RecsSDK object (data hash blessed directly) so it supports both$r->{field}and$r->get("a/b")has()andTO_JSON()methods to RecsSDK, useScalar::Util::reftypefor blessed hashref handlingremove(),rename(),prune_to()(+keys()for Perl)man/man1/; addman/to.gitignoregenerateManPages(outDir)fromscripts/generate-manpages.tsfor reuserecs install-manpagessubcommand that generates and installs man pages to~/.local/share/man/man1/manpages.test.tsto use a temp directory instead of writing into the repoTest plan
git statusstays clean after test runs (no more man page date noise)bun bin/recs.ts install-manpagesinstalls man pages to~/.local/share/man/man1/🤖 Generated with Claude Code