From d77ae8633ad20a41f1b5d3203c2116d7c7e1f8a0 Mon Sep 17 00:00:00 2001 From: Nikhil Ghalme Date: Sun, 5 Apr 2026 12:11:21 +0530 Subject: [PATCH] Forward css.format.* settings to js-beautify's CSS sub-formatter The HTML formatter uses js-beautify which already supports CSS formatting options via a css sub-object, but HTMLFormatConfiguration never passed them through. This caused css.format.newlineBetweenSelectors, newlineBetweenRules, and other CSS settings to be ignored when formatting embedded CSS in ', + '', + '', + '', + ].join('\n'); + + var expected = [ + '', + '', + '', + ' ', + '', + '', + '', + ].join('\n'); + + formatWithOptions(content, expected, { + tabSize: 2, + insertSpaces: true, + css: { newlineBetweenSelectors: false } + }); + }); + + test('css.newlineBetweenSelectors: true (default)', () => { + var content = [ + '', + '', + '', + ' ', + '', + '', + '', + ].join('\n'); + + var expected = [ + '', + '', + '', + ' ', + '', + '', + '', + ].join('\n'); + + formatWithOptions(content, expected, { + tabSize: 2, + insertSpaces: true, + css: { newlineBetweenSelectors: true } + }); + }); + + test('css.newlineBetweenRules: false', () => { + var content = [ + '', + '', + '', + ' ', + '', + '', + '', + ].join('\n'); + + var expected = [ + '', + '', + '', + ' ', + '', + '', + '', + ].join('\n'); + + formatWithOptions(content, expected, { + tabSize: 2, + insertSpaces: true, + css: { newlineBetweenRules: false } + }); + }); + + test('css.newlineBetweenRules: true (default)', () => { + var content = [ + '', + '', + '', + ' ', + '', + '', + '', + ].join('\n'); + + var expected = [ + '', + '', + '', + ' ', + '', + '', + '', + ].join('\n'); + + formatWithOptions(content, expected, { + tabSize: 2, + insertSpaces: true, + css: { newlineBetweenRules: true } + }); + }); + + test('css.spaceAroundSelectorSeparator: true', () => { + var content = [ + '', + '', + '', + ' ', + '', + '', + '', + ].join('\n'); + + var expected = [ + '', + '', + '', + ' ', + '', + '', + '', + ].join('\n'); + + formatWithOptions(content, expected, { + tabSize: 2, + insertSpaces: true, + css: { spaceAroundSelectorSeparator: true } + }); + }); + + test('no css options passed - uses defaults', () => { + var content = [ + '', + '', + '', + ' ', + '', + '', + '', + ].join('\n'); + + // Default: newlineBetweenSelectors is true + var expected = [ + '', + '', + '', + ' ', + '', + '', + '', + ].join('\n'); + + formatWithOptions(content, expected, { + tabSize: 2, + insertSpaces: true, + }); + }); + +});