aboutsummaryrefslogtreecommitdiff
path: root/atom/packages/pretty-json/index.coffee
diff options
context:
space:
mode:
authorBen Beltran <ben@nsovocal.com>2017-03-02 13:13:31 -0600
committerBen Beltran <ben@nsovocal.com>2017-03-02 13:13:31 -0600
commit06a3d6866e4f545abddd6654e490e50b623330a9 (patch)
treee0e6a7d72eeaf647d03a44ed5c12733796fb8b87 /atom/packages/pretty-json/index.coffee
parent49c52987b6c6be6392351b6a7b227efc7341a414 (diff)
Update atoms
Diffstat (limited to 'atom/packages/pretty-json/index.coffee')
-rw-r--r--atom/packages/pretty-json/index.coffee61
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)