Fix -n LIMIT restarting on every line - #351
Open
VXNCXNX wants to merge 1 commit into
Open
Conversation
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.
-n LIMITis documented as "Limit the number of replacements that can occur per file", but in the default line-by-line mode the limit restarts on every line, so there is no overall cap. Only-A/--acrosshonours the documented behaviour. On a file of threea alines:process_reader_line_by_linecalledreplacer.replaceonce per line and each call restarted fromself.replacements.replacennow takes a&mut budgetit decrements, and the reader creates one budget per input instead of one per line.Replacer::replacekeeps its signature, so the across path and the library API are unchanged.-n 2now matches-A -n 2exactly and unlimited output is untouched. Two tests added insd-cli/tests/cli.rs. Suite passes, clippy clean.cargo fmt --checkflags one pre-existing diff in that file, not in code I touched, so I left it.AI disclosure: written with Claude Code. I ran the binary before and after and checked the mutation myself.