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

Retain line breaks #27

Closed
braydonk opened this issue Aug 24, 2022 · 5 comments
Closed

Retain line breaks #27

braydonk opened this issue Aug 24, 2022 · 5 comments
Milestone

Comments

@braydonk
Copy link
Collaborator

Sometimes yaml blocks will have a line break between them for human readability, for example:

block_a:
  b: "some stuff"

block_b:
  a: "some more info"

Today, this will end up being formatted like this:

block_a:
  b: "some stuff"
block_b:
  a: "some more info"

It would be great not to remove these if possible.

@braydonk
Copy link
Collaborator Author

braydonk commented Aug 24, 2022

This is going to be non-trivial to solve (not even sure it will be possible the way the basic formatter is set up) so right now I cannot target it for any particular release.

@braydonk braydonk added this to the Future Plans milestone Aug 31, 2022
@longkai
Copy link
Contributor

longkai commented Sep 8, 2022

Hello, I have implemented one based on the forked repo and happy to make a contribution.

The binary works but I haven't had time to write tests.

@braydonk
Copy link
Collaborator Author

braydonk commented Sep 8, 2022

Hi @longkai thank you for the work on your fork! The compact sequence indent is a great feature, it would be great to implement that at some point.

Unfortunately, I don't think your fork solves this particular case. Here's my results when I cloned your fork and gave it a shot:

braydonk@bk:~/Documents/yamlfmt$ cat .yamlfmt
formatter:
  type: basic
  compact_sequence_indent: true
braydonk@bk:~/Documents/yamlfmt$ cat x.yaml
# comment
x:

y:
  z: 1
braydonk@bk:~/Documents/yamlfmt$ go run ./cmd/yamlfmt x.yaml
braydonk@bk:~/Documents/yamlfmt$ cat x.yaml
# comment
x:
y:
  z: 1
braydonk@bk:~/Documents/yamlfmt$ 

I'm also not sure at the moment if I'm ready to accept a fork of the main yaml library as a replacement. I am thinking that the lack of responsiveness on that repo is going to make it very challenging to continue using it, but I'm not sure if the solution for that will be to either hard fork and keep control myself, or to actually roll a new yaml library that's easier to work with than a C library. When I come up with something for this, I'd be happy to accept the contribution. Thank you!

@longkai
Copy link
Contributor

longkai commented Sep 9, 2022

@braydonk well, actually, that branch is used by myself. Since I deal with many k8s yamls on my daily job. Without the feature is annoying.

I know using a forked go mod is not the right way so I just leave it there and hopefully this repo could implement one.

For this line breaks case, the code lives in another branch I did't push to GitHub yesterday.

I bundle it as a vscode extension and it works well.

You can try it at https://github.com/longkai/yamlfmt/tree/feat/retain-line-break. Hopefully I can make a contribution. That will be great, haha.

@braydonk
Copy link
Collaborator Author

braydonk commented Sep 9, 2022

Ah of course, I didn't notice the other branch. Sorry about that.
Took a glance at the PR, that's a clever solution! I didn't consider that option. I should have time to give it a proper review tomorrow. Thanks for the PR!

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

No branches or pull requests

2 participants