We've been using SyntaxTree extensively for formatting in a number of our apps at work, and I recently came across something I was a bit surprised wasn't already part of the formatting rules: ensuring there's a blank line between each method definition.
Before this change, the following code would be unchanged by SyntaxTree:
def foo
end
def bar
end
After, it will be formatted like so:
def foo
end
def bar
end
I think this is a fairly uncontroversial formatting opinion (though I've certainly misjudged these before π). It lines up with the RuboCop default for Layout/EmptyLineBetweenDefs, which of course is disable when using the SyntaxTree RuboCop config. I stopped short of doing the same for classes and modules as method definitions seemed the most common to have in succession.
I took a swing at implementing the change, but I'm not terribly confident that this is exactly the right approach. I have run this against a few of our code bases and haven't seen any unintended changes.
Is this something you'd consider tweaking in SyntaxTree? If so, is there anything I can do differently in the implementation to help it fit in with the rest of the project?
We've been using SyntaxTree extensively for formatting in a number of our apps at work, and I recently came across something I was a bit surprised wasn't already part of the formatting rules: ensuring there's a blank line between each method definition.
Before this change, the following code would be unchanged by SyntaxTree:
After, it will be formatted like so:
I think this is a fairly uncontroversial formatting opinion (though I've certainly misjudged these before π). It lines up with the RuboCop default for
Layout/EmptyLineBetweenDefs
, which of course is disable when using the SyntaxTree RuboCop config. I stopped short of doing the same for classes and modules as method definitions seemed the most common to have in succession.I took a swing at implementing the change, but I'm not terribly confident that this is exactly the right approach. I have run this against a few of our code bases and haven't seen any unintended changes.
Is this something you'd consider tweaking in SyntaxTree? If so, is there anything I can do differently in the implementation to help it fit in with the rest of the project?