Skip to content

Conversation

@djunehor
Copy link

This PR addresses Issue #195 where the space option was not being applied to function body formatting. The implementation enhances the serializeFunc function to accept and utilize formatting options, ensuring function bodies are properly indented and formatted when the space option is provided. Added comprehensive test coverage for anonymous functions, named functions, arrow functions, multiple functions in the same object, and edge cases. All existing functionality remains intact with 100% test coverage maintained (80/80 tests passing).


I confirm that this contribution is made under the terms of the license found in the root directory of this repository's source tree and that I have the authority necessary to make this contribution on behalf of its copyright owner.

@okuryu
Copy link
Collaborator

okuryu commented Nov 10, 2025

I’m a bit concerned that the code has grown quite a lot. I wonder if there might be a cleaner implementation—does that seem difficult?

@djunehor
Copy link
Author

I’m a bit concerned that the code has grown quite a lot. I wonder if there might be a cleaner implementation—does that seem difficult?

You raised valid points. I've taken a second look at it and realised it can be simpler. There are a few edge cases that the shorter implementation doesn't cover.

I've noted example failing test cases for those edge cases I could think of:

// Test 1: Named function with complex expressions var objWithNamedFunction = { process: function processData(data) { const result = data.map(x=>x*2); if(result.length>0) { return result.filter(x=>x>10); } return []; } }; // Test 2: Arrow function with nested blocks var objWithArrowFunction = { transform: (x) => { const doubled = x*2; if(doubled>10) { return doubled; } return 0; } }; // Test 3: Multiple functions with mixed edge cases var objWithMultipleFunctions = { fn1: function(){return 1;}, fn2: ()=>{return 2;}, // Arrow function spacing fn3: function named(){return 3;} };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants