Skip to content

git-config output to std::io::Write #456

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

Merged
merged 37 commits into from
Jul 13, 2022
Merged

git-config output to std::io::Write #456

merged 37 commits into from
Jul 13, 2022

Conversation

Byron
Copy link
Member

@Byron Byron commented Jul 12, 2022

Tasks

  • write_to(…) method for everyone that can do to_bstring()
  • validation of section and subsection names when mutating them
  • validation of keys when adding them
  • escaping of values when adding them
  • proper escaping of subsections
  • proper escaping of values
  • a way to define the amount of leading spaces per File or automatically
  • escape values when keys are pushed onto sections
  • surround key-value separator with whitespace depending on existing values
  • escape multi-value values
  • tabs become spaces unless within quotes - it's probably better not to do that in an API crate - it round-trips better that way.

@Byron Byron mentioned this pull request Jul 12, 2022
24 tasks
@Byron Byron changed the title config output to config output to std::io::Write Jul 12, 2022
@Byron Byron changed the title config output to std::io::Write git-config output to std::io::Write Jul 12, 2022
Byron added 27 commits July 12, 2022 10:36
Now it's possible to serialize these types in a streaming fashion and
without arbitrarily enforcing UTF-8 on it
#331)

These were superfluous and aren't useful in practice.
Note that serialization is still implemented via `Display`.
…ls. (#331)

Note that it can still display itself like before via
`std::fmt::Display`.
… `TryFrom` impls. (#331)

Now `File` can be serialized in a streaming fashion and without the
possibility for UTF8 conversion issues.

Note that `Display` is still imlpemented with the usual caveats.
Note that this only works for parsed values, and user-added
values still need to be translated into events properly.
…o be better than that (#331)

I am thinking, taking the whitespace directly will be more faithful,
i.e. to handle tabs vs spaces which we can't decide.
…alue. (#331)

That way, newly added key-value pairs look like they should assuming
all keys have the same indentation as the first key in the section.

If there is no key, then the default whitespace will be double-tabs
like what's commmon in git.
…eading_whitespace()`. (#331)

The corresponding getter was renamed as well to `leading_whitespace()`.
…331)

Since `MutableSection` can do all of it too, let's double-down on that
one instead. So in order to set values, one needs a mutable section
first.
@Byron Byron merged commit 20e188f into main Jul 13, 2022
@Byron Byron deleted the config-output branch July 13, 2022 10:28
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.

1 participant