summaryrefslogtreecommitdiff
path: root/elpa/json-reformat-20160212.853
diff options
context:
space:
mode:
Diffstat (limited to 'elpa/json-reformat-20160212.853')
-rw-r--r--elpa/json-reformat-20160212.853/json-reformat-autoloads.el31
-rw-r--r--elpa/json-reformat-20160212.853/json-reformat-pkg.el2
-rw-r--r--elpa/json-reformat-20160212.853/json-reformat.el222
3 files changed, 255 insertions, 0 deletions
diff --git a/elpa/json-reformat-20160212.853/json-reformat-autoloads.el b/elpa/json-reformat-20160212.853/json-reformat-autoloads.el
new file mode 100644
index 0000000..6a42b63
--- /dev/null
+++ b/elpa/json-reformat-20160212.853/json-reformat-autoloads.el
@@ -0,0 +1,31 @@
+;;; json-reformat-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+
+(add-to-list 'load-path (directory-file-name
+ (or (file-name-directory #$) (car load-path))))
+
+
+;;;### (autoloads nil "json-reformat" "json-reformat.el" (0 0 0 0))
+;;; Generated autoloads from json-reformat.el
+
+(autoload 'json-reformat-region "json-reformat" "\
+Reformat the JSON in the specified region.
+
+If you want to customize the reformat style,
+please see the documentation of `json-reformat:indent-width'
+and `json-reformat:pretty-string?'.
+
+\(fn BEGIN END)" t nil)
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "json-reformat" '("json-reformat")))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; coding: utf-8
+;; End:
+;;; json-reformat-autoloads.el ends here
diff --git a/elpa/json-reformat-20160212.853/json-reformat-pkg.el b/elpa/json-reformat-20160212.853/json-reformat-pkg.el
new file mode 100644
index 0000000..60678f5
--- /dev/null
+++ b/elpa/json-reformat-20160212.853/json-reformat-pkg.el
@@ -0,0 +1,2 @@
+;;; -*- no-byte-compile: t -*-
+(define-package "json-reformat" "20160212.853" "Reformatting tool for JSON" 'nil :commit "8eb6668ed447988aea06467ba8f42e1f2178246f" :keywords '("json") :authors '(("Wataru MIYAGUNI" . "gonngo@gmail.com")) :maintainer '("Wataru MIYAGUNI" . "gonngo@gmail.com") :url "https://github.com/gongo/json-reformat")
diff --git a/elpa/json-reformat-20160212.853/json-reformat.el b/elpa/json-reformat-20160212.853/json-reformat.el
new file mode 100644
index 0000000..fdb2328
--- /dev/null
+++ b/elpa/json-reformat-20160212.853/json-reformat.el
@@ -0,0 +1,222 @@
+;;; json-reformat.el --- Reformatting tool for JSON
+
+;; Author: Wataru MIYAGUNI <gonngo@gmail.com>
+;; URL: https://github.com/gongo/json-reformat
+;; Package-Version: 20160212.853
+;; Package-Commit: 8eb6668ed447988aea06467ba8f42e1f2178246f
+;; Version: 0.0.6
+;; Keywords: json
+
+;; Copyright (c) 2012 Wataru MIYAGUNI
+;;
+;; MIT License
+;;
+;; Permission is hereby granted, free of charge, to any person obtaining
+;; a copy of this software and associated documentation files (the
+;; "Software"), to deal in the Software without restriction, including
+;; without limitation the rights to use, copy, modify, merge, publish,
+;; distribute, sublicense, and/or sell copies of the Software, and to
+;; permit persons to whom the Software is furnished to do so, subject to
+;; the following conditions:
+;;
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+;;
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+;; LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+;; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+;; WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+;;; Commentary:
+
+;; json-reformat.el is a reformatting tool for JSON (http://json.org/).
+;;
+;; ## Usage
+;;
+;; 1. Specify region
+;; 2. Call 'M-x json-reformat-region'
+;;
+;; ## Customize
+;;
+;; - `json-reformat:indent-width'
+;; - `json-reformat:pretty-string?'
+;;
+
+;;; Code:
+
+(require 'json)
+(eval-when-compile (require 'cl))
+
+(unless (require 'subr-x nil t)
+ ;; built-in subr-x from 24.4
+ (defsubst hash-table-keys (hash-table)
+ "Return a list of keys in HASH-TABLE."
+ (let ((keys '()))
+ (maphash (lambda (k _v) (push k keys)) hash-table)
+ keys)))
+
+(put 'json-reformat-error 'error-message "JSON Reformat error")
+(put 'json-reformat-error 'error-conditions '(json-reformat-error error))
+
+(defconst json-reformat:special-chars-as-pretty-string
+ '((?\" . ?\")
+ (?\\ . ?\\)))
+
+(defcustom json-reformat:indent-width 4
+ "How much indentation `json-reformat-region' should do at each level."
+ :type 'integer
+ :safe #'integerp
+ :group 'json-reformat)
+
+(defcustom json-reformat:pretty-string? nil
+ "Whether to decode the string.
+
+Example:
+
+{\"name\":\"foobar\",\"nick\":\"foo \\u00e4 bar\",\"description\":\"<pre>\\nbaz\\n</pre>\"}
+
+If nil:
+
+ {
+ \"name\": \"foobar\",
+ \"nick\": \"foo \\u00e4 bar\",
+ \"description\": \"<pre>\\nbaz\\n<\\/pre>\"
+ }
+
+Else t:
+
+ {
+ \"name\": \"foobar\",
+ \"nick\": \"foo รค bar\",
+ \"description\": \"<pre>
+ baz
+ </pre>\"
+ }"
+ :type 'boolean
+ :safe #'booleanp
+ :group 'json-reformat)
+
+(defun json-reformat:indent (level)
+ (make-string (* level json-reformat:indent-width) ? ))
+
+(defun json-reformat:number-to-string (val)
+ (number-to-string val))
+
+(defun json-reformat:symbol-to-string (val)
+ (cond ((equal 't val) "true")
+ ((equal json-false val) "false")
+ (t (symbol-name val))))
+
+(defun json-reformat:encode-char-as-pretty (char)
+ (setq char (encode-char char 'ucs))
+ (let ((special-char (car (rassoc char json-reformat:special-chars-as-pretty-string))))
+ (if special-char
+ (format "\\%c" special-char)
+ (format "%c" char))))
+
+(defun json-reformat:string-to-string (val)
+ (if json-reformat:pretty-string?
+ (format "\"%s\"" (mapconcat 'json-reformat:encode-char-as-pretty val ""))
+ (json-encode-string val)))
+
+(defun json-reformat:vector-to-string (val level)
+ (if (= (length val) 0) "[]"
+ (concat "[\n"
+ (mapconcat
+ 'identity
+ (loop for v across val
+ collect (concat
+ (json-reformat:indent (1+ level))
+ (json-reformat:print-node v (1+ level))
+ ))
+ (concat ",\n"))
+ "\n" (json-reformat:indent level) "]"
+ )))
+
+(defun json-reformat:print-node (val level)
+ (cond ((hash-table-p val) (json-reformat:tree-to-string (json-reformat:tree-sibling-to-plist val) level))
+ ((numberp val) (json-reformat:number-to-string val))
+ ((vectorp val) (json-reformat:vector-to-string val level))
+ ((null val) "null")
+ ((symbolp val) (json-reformat:symbol-to-string val))
+ (t (json-reformat:string-to-string val))))
+
+(defun json-reformat:tree-sibling-to-plist (root)
+ (let (pl)
+ (dolist (key (reverse (hash-table-keys root)) pl)
+ (setq pl (plist-put pl key (gethash key root))))))
+
+(defun json-reformat:tree-to-string (root level)
+ (concat "{\n"
+ (let (key val str)
+ (while root
+ (setq key (car root)
+ val (cadr root)
+ root (cddr root))
+ (setq str
+ (concat str (json-reformat:indent (1+ level))
+ "\"" key "\""
+ ": "
+ (json-reformat:print-node val (1+ level))
+ (when root ",")
+ "\n"
+ )))
+ str)
+ (json-reformat:indent level)
+ "}"))
+
+(defun json-reformat-from-string (string)
+ (with-temp-buffer
+ (insert string)
+ (goto-char (point-min))
+ (condition-case errvar
+ (let ((json-key-type 'string)
+ (json-object-type 'hash-table)
+ json-tree)
+ (setq json-tree (json-read))
+ (json-reformat:print-node json-tree 0))
+ (json-error
+ (signal 'json-reformat-error
+ (list (error-message-string errvar)
+ (line-number-at-pos (point))
+ (point)))))))
+
+;;;###autoload
+(defun json-reformat-region (begin end)
+ "Reformat the JSON in the specified region.
+
+If you want to customize the reformat style,
+please see the documentation of `json-reformat:indent-width'
+and `json-reformat:pretty-string?'."
+ (interactive "*r")
+ (let ((start-line (line-number-at-pos begin))
+ (start-pos begin))
+ (save-excursion
+ (save-restriction
+ (narrow-to-region begin end)
+ (goto-char (point-min))
+ (let (reformatted)
+ (condition-case errvar
+ (progn
+ (setq reformatted
+ (json-reformat-from-string
+ (buffer-substring-no-properties (point-min) (point-max))))
+ (delete-region (point-min) (point-max))
+ (insert reformatted))
+ (json-reformat-error
+ (let ((reason (nth 1 errvar))
+ (line (nth 2 errvar))
+ (position (nth 3 errvar)))
+ (message
+ "JSON parse error [Reason] %s [Position] In buffer, line %d (char %d)"
+ reason
+ (+ start-line line -1)
+ (+ start-pos position -1))))))))))
+
+(provide 'json-reformat)
+
+;;; json-reformat.el ends here
Copyright 2019--2024 Marius PETER