diff --git a/examples/nested-jsbeautifyrc/.jsbeautifyrc b/examples/nested-jsbeautifyrc/.jsbeautifyrc index e8e138c51..6d223e776 100644 --- a/examples/nested-jsbeautifyrc/.jsbeautifyrc +++ b/examples/nested-jsbeautifyrc/.jsbeautifyrc @@ -1,31 +1,32 @@ -{ - "html": { - "brace_style": "collapse", - "indent_char": " ", - "indent_scripts": "normal", - "indent_size": 6, - "max_preserve_newlines": 1, - "preserve_newlines": true, - "unformatted": ["a", "sub", "sup", "b", "i", "u"], - "wrap_line_length": 0 - }, - "css": { - "indent_char": " ", - "indent_size": 4 - }, - "js": { - "indent_size": 2, - "indent_char": " ", - "indent_level": 0, - "indent_with_tabs": false, - "preserve_newlines": true, - "max_preserve_newlines": 2, - "jslint_happy": true - }, - "sql": { - "indent_size": 4, - "indent_char": " ", - "indent_level": 0, - "indent_with_tabs": false - } -} +--- + html: + brace_style: "collapse" + indent_char: " " + indent_scripts: "normal" + indent_size: 6 + max_preserve_newlines: 1 + preserve_newlines: true + unformatted: + - "a" + - "sub" + - "sup" + - "b" + - "i" + - "u" + wrap_line_length: 0 + css: + indent_char: " " + indent_size: 4 + js: + indent_size: 2 + indent_char: " " + indent_level: 0 + indent_with_tabs: false + preserve_newlines: true + max_preserve_newlines: 2 + jslint_happy: true + sql: + indent_size: 4 + indent_char: " " + indent_level: 0 + indent_with_tabs: false diff --git a/examples/nested-jsbeautifyrc/.jsbeautifyrc_json b/examples/nested-jsbeautifyrc/.jsbeautifyrc_json new file mode 100644 index 000000000..e8e138c51 --- /dev/null +++ b/examples/nested-jsbeautifyrc/.jsbeautifyrc_json @@ -0,0 +1,31 @@ +{ + "html": { + "brace_style": "collapse", + "indent_char": " ", + "indent_scripts": "normal", + "indent_size": 6, + "max_preserve_newlines": 1, + "preserve_newlines": true, + "unformatted": ["a", "sub", "sup", "b", "i", "u"], + "wrap_line_length": 0 + }, + "css": { + "indent_char": " ", + "indent_size": 4 + }, + "js": { + "indent_size": 2, + "indent_char": " ", + "indent_level": 0, + "indent_with_tabs": false, + "preserve_newlines": true, + "max_preserve_newlines": 2, + "jslint_happy": true + }, + "sql": { + "indent_size": 4, + "indent_char": " ", + "indent_level": 0, + "indent_with_tabs": false + } +} diff --git a/examples/nested-jsbeautifyrc/test.html b/examples/nested-jsbeautifyrc/test.html index c6f5bdfd8..c7b26c985 100644 --- a/examples/nested-jsbeautifyrc/test.html +++ b/examples/nested-jsbeautifyrc/test.html @@ -2,14 +2,14 @@
-- World! -
++World! +
diff --git a/lib/atom-beautify.js b/lib/atom-beautify.js index 9f47838f4..7e5b44595 100644 --- a/lib/atom-beautify.js +++ b/lib/atom-beautify.js @@ -11,6 +11,8 @@ var path = require('path'); var nopt = require('nopt'); var extend = require('extend'); var _ = require('lodash'); +var strip = require('strip-json-comments'); +var yaml = require('js-yaml'); // TODO: Copied from jsbeautify, please update it from time to time var knownOpts = { @@ -180,14 +182,26 @@ function beautify() { var externalOptions; if (configPath) { - var strip = require('strip-json-comments'); - try { - externalOptions = JSON.parse(strip(fs.readFileSync(configPath, { - encoding: 'utf8' - }))); - } catch (e) { - console.log('Failed parsing config JSON at ' + configPath); + var contents = fs.readFileSync(configPath, { + encoding: 'utf8' + }); + if (!contents) { externalOptions = {}; + } else { + try { + externalOptions = JSON.parse(strip(contents)); + } catch (e) { + console.log('Failed parsing config as JSON: ' + configPath); + + // Attempt as YAML + try { + externalOptions = yaml.safeLoad(contents); + } catch (e) { + console.log('Failed parsing config as YAML: ' + configPath); + externalOptions = {}; + } + + } } } else { externalOptions = {}; diff --git a/package.json b/package.json index 2a18c6dce..7e63ee712 100644 --- a/package.json +++ b/package.json @@ -17,23 +17,29 @@ "email": "pipo@senaeh.de", "url": "https://github.com/donaldpipowitch" }, - "contributors": [{ - "name": "László Károlyi", - "url": "https://github.com/karolyi" - }, { - "name": "Glavin Wiechert", - "email": "glavin.wiechert@gmail.com", - "url": "https://github.com/Glavin001" - }, { - "name": "Marco Tanzi", - "url": "https://github.com/mtanzi" - }, { - "name": "gvn lazar suntop", - "url": "https://github.com/gvn" - }, { - "name": "Vadim K.", - "url": "https://github.com/vadirn" - }], + "contributors": [ + { + "name": "László Károlyi", + "url": "https://github.com/karolyi" + }, + { + "name": "Glavin Wiechert", + "email": "glavin.wiechert@gmail.com", + "url": "https://github.com/Glavin001" + }, + { + "name": "Marco Tanzi", + "url": "https://github.com/mtanzi" + }, + { + "name": "gvn lazar suntop", + "url": "https://github.com/gvn" + }, + { + "name": "Vadim K.", + "url": "https://github.com/vadirn" + } + ], "keywords": [ "atom", "beautify", @@ -62,6 +68,7 @@ "js-beautify": "~1.5.1", "nopt": "^3.0.0", "lodash": "2.4.1", - "strip-json-comments": "^0.1.3" + "strip-json-comments": "^0.1.3", + "js-yaml": "^3.0.2" } }