From f5a9ba818a138a501fb3f6eb97b5baeb40936c4d Mon Sep 17 00:00:00 2001 From: Alexander Kozienko Date: Mon, 23 Feb 2015 19:01:13 +0200 Subject: [PATCH] fix json pretty print --- .../Toggle JSON Format.spBundle/command.plist | 42 +++++-------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/core/Toggle JSON Format.spBundle/command.plist b/core/Toggle JSON Format.spBundle/command.plist index 3955536..ffcbd4d 100644 --- a/core/Toggle JSON Format.spBundle/command.plist +++ b/core/Toggle JSON Format.spBundle/command.plist @@ -7,40 +7,20 @@ category Format command - DATA=$(cat) - -FORMAT=$(echo "$DATA" | head -n 1 | perl -e '$l=<>;if($l=~m/^\s*\{\s*$/) {print "1";} else {print "2";}') - -# if FORMAT == 1 then serialize JSON data otherwise pretty print them -if [ "$FORMAT" -eq "1" ]; then - - DATA=$(echo "$DATA" | php -r ' - $jsonData = ""; - $inputStream = fopen("php://stdin", "r"); - while($d = fgets($inputStream)) { $jsonData .= $d; } - print json_encode(json_decode($jsonData)); - ') - if [ "$DATA" == "null" ]; then - echo "<font>An error occured while serializing JSON data!</font>" - exit $SP_BUNDLE_EXIT_SHOW_AS_HTML_TOOLTIP - fi - -else - - DATA=$(echo "$DATA" | python -mjson.tool) - -fi - -# if there's a need to preserve Unicode characters remove the first to characters of the following line -# DATA=$(echo "$DATA" | perl -Xpe 'binmode STDIN,":utf8";binmode STDOUT,":utf8";s/\\u([0-9A-F]{4})/chr(hex($1))/ieg') - -printf "%b" "$DATA" + #!/usr/bin/python +import sys +import json +from collections import OrderedDict + +try: + data = json.load(sys.stdin, object_hook=OrderedDict, object_pairs_hook=OrderedDict) + json.dump(data, sys.stdout, indent=2, sort_keys=False) +except Exception as e: + sys.exit(e.message) contact znvy@ovovxb.qr description - If the first line of the selection or the entire content of the current text input field only contains a "{" then serialize the JSON data otherwise the JSON data will be pretty printed. If there's a need to preserve the Unicode characters you can uncomment the line 22. - -Version 1.0 + Version 2.0 input selectedtext input_fallback