aboutsummaryrefslogtreecommitdiff
path: root/atom/packages/pretty-json/index.coffee
diff options
context:
space:
mode:
authorBen Beltran <ben@nsovocal.com>2017-03-02 23:10:51 -0600
committerBen Beltran <ben@nsovocal.com>2017-03-02 23:10:51 -0600
commit35ab4aab6926fb6cd2b44eda8bc14c72a8759b75 (patch)
tree0c08edd4f9b6a0bc9bb2780b8a496ed8c69e20a4 /atom/packages/pretty-json/index.coffee
parent0b4318740e55d6977d98872eff6bebfe948bf46f (diff)
parent28cc50d9af1fd1314afde30169dc22bba5934380 (diff)
Merge remote-tracking branch 'origin/master'
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)