Skip to content

Commit

Permalink
Fixed extra line before function declaration
Browse files Browse the repository at this point in the history
Fixes #1085
  • Loading branch information
bitwiseman committed Dec 30, 2016
1 parent ef30d29 commit 3e52b98
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 2 deletions.
2 changes: 1 addition & 1 deletion js/lib/beautify.js
Original file line number Diff line number Diff line change
Expand Up @@ -1052,7 +1052,7 @@ if (!Object.values) {
}

if (current_token.type === 'TK_RESERVED' && current_token.text === 'function') {
if (in_array(flags.last_text, ['}', ';']) || (output.just_added_newline() && !in_array(flags.last_text, ['[', '{', ':', '=', ',']))) {
if (in_array(flags.last_text, ['}', ';']) || (output.just_added_newline() && !in_array(flags.last_text, ['(', '[', '{', ':', '=', ',']))) {
// make sure there is a nice clean space of at least one blank line
// before a new function definition
if (!output.just_added_blankline() && !current_token.comments_before.length) {
Expand Down
32 changes: 32 additions & 0 deletions js/test/generated/beautify-javascript-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -513,6 +513,22 @@ function run_javascript_tests(test_obj, Urlencoded, js_beautify, html_beautify,
' name: "Jonathan" // New line inserted after this line on every save\n' +
' ,\n age: 25\n' +
'});');
bt(
'changeCollection.add(\n' +
' function() {\n' +
' return true;\n' +
' },\n' +
' function() {\n' +
' return true;\n' +
' }\n' +
');',
'changeCollection.add(\n' +
' function() {\n' +
' return true;\n' +
' },\n function() {\n' +

This comment has been minimized.

Copy link
@gagern

gagern Dec 30, 2016

Do you really want a \n in the middle of a line of this string literal? Looks confusing.

This comment has been minimized.

Copy link
@bitwiseman

bitwiseman Jan 1, 2017

Author Member

This is a generated file. This test is generated from here:
3e52b98#diff-21aafc3e3f25c556cd000d5130c62bdbR401

The code there has the \n in the middle of the string, because the value is pulled from a template.
It is a minor bug/limitation in the generator code.

' return true;\n' +
' }\n' +
');');

// Comma-first option - (c0 = "\n, ", c1 = "\n , ", c2 = "\n , ", c3 = "\n , ", f1 = ", ")
reset_options();
Expand All @@ -537,6 +553,22 @@ function run_javascript_tests(test_obj, Urlencoded, js_beautify, html_beautify,
' name: "Jonathan" // New line inserted after this line on every save\n' +
' , age: 25\n' +
'});');
bt(
'changeCollection.add(\n' +
' function() {\n' +
' return true;\n' +
' },\n' +
' function() {\n' +
' return true;\n' +
' }\n' +
');',
'changeCollection.add(\n' +
' function() {\n' +
' return true;\n' +
' }\n , function() {\n' +
' return true;\n' +
' }\n' +
');');


//============================================================
Expand Down
2 changes: 1 addition & 1 deletion python/jsbeautifier/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -997,7 +997,7 @@ def handle_word(self, current_token):
self.allow_wrap_or_preserved_newline(current_token)

if current_token.type == 'TK_RESERVED' and current_token.text == 'function':
if self.flags.last_text in ['}', ';'] or (self.output.just_added_newline() and not self.flags.last_text in ['[', '{', ':', '=', ',']):
if self.flags.last_text in ['}', ';'] or (self.output.just_added_newline() and not self.flags.last_text in ['(', '[', '{', ':', '=', ',']):
# make sure there is a nice clean space of at least one blank line
# before a new function definition, except in arrays
if not self.output.just_added_blankline() and len(current_token.comments_before) == 0:
Expand Down
32 changes: 32 additions & 0 deletions python/jsbeautifier/tests/generated/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,22 @@ def unicode_char(value):
' name: "Jonathan" // New line inserted after this line on every save\n' +
' ,\n age: 25\n' +
'});')
bt(
'changeCollection.add(\n' +
' function() {\n' +
' return true;\n' +
' },\n' +
' function() {\n' +
' return true;\n' +
' }\n' +
');',
'changeCollection.add(\n' +
' function() {\n' +
' return true;\n' +
' },\n function() {\n' +
' return true;\n' +
' }\n' +
');')

# Comma-first option - (c0 = "\n, ", c1 = "\n , ", c2 = "\n , ", c3 = "\n , ", f1 = ", ")
self.reset_options();
Expand All @@ -365,6 +381,22 @@ def unicode_char(value):
' name: "Jonathan" // New line inserted after this line on every save\n' +
' , age: 25\n' +
'});')
bt(
'changeCollection.add(\n' +
' function() {\n' +
' return true;\n' +
' },\n' +
' function() {\n' +
' return true;\n' +
' }\n' +
');',
'changeCollection.add(\n' +
' function() {\n' +
' return true;\n' +
' }\n , function() {\n' +
' return true;\n' +
' }\n' +
');')


#============================================================
Expand Down
21 changes: 21 additions & 0 deletions test/data/javascript/tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,27 @@ exports.test_data = {
'});'
]
},
{
input: [
'changeCollection.add(',
' function() {',
' return true;',
' },',
' function() {',
' return true;',
' }',
');'
],
output: [
'changeCollection.add(',
' function() {',
' return true;',
' }{{c1}}function() {',
' return true;',
' }',
');'
]
},
],
}, {
name: "Space in parens tests",
Expand Down

0 comments on commit 3e52b98

Please sign in to comment.