Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add String() methods to parsed types #48

Merged
merged 12 commits into from
Aug 11, 2024
Merged

Add String() methods to parsed types #48

merged 12 commits into from
Aug 11, 2024

Conversation

bluekeyes
Copy link
Owner

This enables clients to move back and forth between parsed objects and text patches. The generated patches are semantically equal to the parsed object and should parse to the same object, but may not be byte-for-byte identical to the original input.

At the moment, this only works for text fragments. Marking as a draft while I figure out how to add appropriate tests and decide if I want to support binary patches right now.

Closes #47.

This enables clients to move back and forth between parsed objects and
text patches. The generated patches are semantically equal to the parsed
object and should parse to the same object, but may not be byte-for-byte
identical to the original input.
Add "a/" and "b/" prefixes to names on "---" and "+++" lines. Reorder
lines to match Git. Only print mode lines when the mode is changing.
For now, assert that we produce exactly the same output as the original
parsed input. I think these tests would ideally assert that the
re-parsed value is the same, but it's kind of annoying to compare File
objects without adding an external dependency.
Implement base85 encoding and improve how binary patches are displayed.
This fails the tests due to differences between the Git and Go
implementation of zlib. I need to decide how to resolve this.
Re-parse our string representation and make sure it is equal. This is
important for binary patches due to inconsistencies in DEFLATE
implementations, but we do it for text patches too.
This cleans up the code a bit and allows writing everything to a single
buffer when formatting a full file.
@bluekeyes bluekeyes marked this pull request as ready for review August 11, 2024 18:12
@bluekeyes bluekeyes merged commit 8584cd5 into master Aug 11, 2024
1 check passed
@bluekeyes bluekeyes deleted the to-string branch August 11, 2024 18:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Converting a patch into a diff
1 participant