diff options
| author | Ben Beltran <ben@nsovocal.com> | 2017-03-02 13:13:31 -0600 |
|---|---|---|
| committer | Ben Beltran <ben@nsovocal.com> | 2017-03-02 13:13:31 -0600 |
| commit | 06a3d6866e4f545abddd6654e490e50b623330a9 (patch) | |
| tree | e0e6a7d72eeaf647d03a44ed5c12733796fb8b87 /atom/packages/pretty-json/index.coffee | |
| parent | 49c52987b6c6be6392351b6a7b227efc7341a414 (diff) | |
Update atoms
Diffstat (limited to 'atom/packages/pretty-json/index.coffee')
| -rw-r--r-- | atom/packages/pretty-json/index.coffee | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/atom/packages/pretty-json/index.coffee b/atom/packages/pretty-json/index.coffee new file mode 100644 index 0000000..176dcfb --- /dev/null +++ b/atom/packages/pretty-json/index.coffee @@ -0,0 +1,61 @@ +stringify = require("json-stable-stringify") +uglify = require("jsonminify") +formatter = {} + +prettify = (editor, sorted) -> + wholeFile = editor.getGrammar().name == 'JSON' + + if wholeFile + text = editor.getText() + editor.setText(formatter.pretty(text, sorted)) + else + text = editor.replaceSelectedText({}, (text) -> + formatter.pretty(text, sorted) + ) + +minify = (editor, sorted) -> + wholeFile = editor.getGrammar().name == 'JSON' + + if wholeFile + text = editor.getText() + editor.setText(formatter.minify(text)) + else + text = editor.replaceSelectedText({}, (text) -> + formatter.minify(text); + ) + +formatter.pretty = (text, sorted) -> + editorSettings = atom.config.get('editor') + if editorSettings.softTabs? + space = Array(editorSettings.tabLength + 1).join(" ") + else + space = "\t" + + try + parsed = JSON.parse(text) + if sorted + return stringify(parsed, { space: space }) + else + return JSON.stringify(parsed, null, space) + catch error + text + +formatter.minify = (text) -> + try + JSON.parse(text) + uglify(text); + catch error + text; + +module.exports = + activate: -> + atom.commands.add 'atom-workspace', + 'pretty-json:prettify': -> + editor = atom.workspace.getActiveTextEditor() + prettify(editor) + 'pretty-json:sort-and-prettify': -> + editor = atom.workspace.getActiveTextEditor() + prettify(editor, true) + 'pretty-json:minify': -> + editor = atom.workspace.getActiveTextEditor() + minify(editor, true) |