diff options
Diffstat (limited to 'atom/packages/pretty-json/node_modules/jsonminify/minify.json.js')
| -rw-r--r-- | atom/packages/pretty-json/node_modules/jsonminify/minify.json.js | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/atom/packages/pretty-json/node_modules/jsonminify/minify.json.js b/atom/packages/pretty-json/node_modules/jsonminify/minify.json.js new file mode 100644 index 0000000..bb69ceb --- /dev/null +++ b/atom/packages/pretty-json/node_modules/jsonminify/minify.json.js @@ -0,0 +1,94 @@ +/*! JSON.minify() + v0.1 (c) Kyle Simpson + MIT License +*/ +/** + * @name minify.json.js + * @author Kei Funagayama <kei.topaz@gmail.com + * @overview JSON.minify + */ + +/** + * @namespace JSON + */ +(function(global){ + 'use strict'; + + /** + * @function + * @memberof JSON + * @param {Object} Transformed data. format) json-like + * @return {String} + * + * @example + * var json = { // hoge + * "foo": "bar",// this is cool + * "bar": [ + * "baz", "bum", "zam" // this is cool + * ] + * } // hoge + * + */ + var minify = function (json) { + + var tokenizer = /"|(\/\*)|(\*\/)|(\/\/)|\n|\r/g, + in_string = false, + in_multiline_comment = false, + in_singleline_comment = false, + tmp, tmp2, new_str = [], ns = 0, from = 0, lc, rc + ; + + tokenizer.lastIndex = 0; + + while ( tmp = tokenizer.exec(json) ) { + lc = RegExp.leftContext; + rc = RegExp.rightContext; + if (!in_multiline_comment && !in_singleline_comment) { + tmp2 = lc.substring(from); + if (!in_string) { + tmp2 = tmp2.replace(/(\n|\r|\s)*/g,""); + } + new_str[ns++] = tmp2; + } + from = tokenizer.lastIndex; + + if (tmp[0] === "\"" && !in_multiline_comment && !in_singleline_comment) { + tmp2 = lc.match(/(\\)*$/); + if (!in_string || !tmp2 || (tmp2[0].length % 2) === 0) { // start of string with ", or unescaped " character found to end string + in_string = !in_string; + } + from--; // include " character in next catch + rc = json.substring(from); + } + else if (tmp[0] === "/*" && !in_string && !in_multiline_comment && !in_singleline_comment) { + in_multiline_comment = true; + } + else if (tmp[0] === "*/" && !in_string && in_multiline_comment && !in_singleline_comment) { + in_multiline_comment = false; + } + else if (tmp[0] === "//" && !in_string && !in_multiline_comment && !in_singleline_comment) { + in_singleline_comment = true; + } + else if ((tmp[0] === "\n" || tmp[0] === "\r") && !in_string && !in_multiline_comment && in_singleline_comment) { + in_singleline_comment = false; + } + else if (!in_multiline_comment && !in_singleline_comment && !(/\n|\r|\s/.test(tmp[0]))) { + new_str[ns++] = tmp[0]; + } + } + new_str[ns++] = rc; + return new_str.join(""); + }; + + if (typeof module !== 'undefined' && module.exports) { + // node + module.exports = minify; + JSON.minify = minify; + } else { + // others, export global + if (typeof global.JSON === "undefined" || !global.JSON) { + global.JSON = {}; + } + global.JSON.minify = minify; + } +})(this); |