]>
Commit | Line | Data |
---|---|---|
1 | <!DOCTYPE html> | |
2 | <html lang="en"> | |
3 | <head> | |
4 | <meta charset="utf-8"> | |
5 | <title>JSDoc: Source: minify.json.js</title> | |
6 | ||
7 | <script src="scripts/prettify/prettify.js"> </script> | |
8 | <script src="scripts/prettify/lang-css.js"> </script> | |
9 | <!--[if lt IE 9]> | |
10 | <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> | |
11 | <![endif]--> | |
12 | <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> | |
13 | <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> | |
14 | </head> | |
15 | ||
16 | <body> | |
17 | ||
18 | <div id="main"> | |
19 | ||
20 | <h1 class="page-title">Source: minify.json.js</h1> | |
21 | ||
22 | ||
23 | ||
24 | ||
25 | ||
26 | <section> | |
27 | <article> | |
28 | <pre class="prettyprint source"><code>/*! JSON.minify() | |
29 | v0.1 (c) Kyle Simpson | |
30 | MIT License | |
31 | */ | |
32 | /** | |
33 | * @name minify.json.js | |
34 | * @author Kei Funagayama <kei.topaz@gmail.com | |
35 | * @overview JSON.minify | |
36 | */ | |
37 | ||
38 | /** | |
39 | * @namespace JSON | |
40 | */ | |
41 | (function(global){ | |
42 | 'use strict'; | |
43 | ||
44 | /** | |
45 | * @function | |
46 | * @memberof JSON | |
47 | * @param {Object} Transformed data. format) json-like | |
48 | * @return {String} | |
49 | * | |
50 | * @example | |
51 | * var json = { // hoge | |
52 | * "foo": "bar",// this is cool | |
53 | * "bar": [ | |
54 | * "baz", "bum", "zam" // this is cool | |
55 | * ] | |
56 | * } // hoge | |
57 | * | |
58 | */ | |
59 | var minify = function (json) { | |
60 | ||
61 | var tokenizer = /"|(\/\*)|(\*\/)|(\/\/)|\n|\r/g, | |
62 | in_string = false, | |
63 | in_multiline_comment = false, | |
64 | in_singleline_comment = false, | |
65 | tmp, tmp2, new_str = [], ns = 0, from = 0, lc, rc | |
66 | ; | |
67 | ||
68 | tokenizer.lastIndex = 0; | |
69 | ||
70 | while ( tmp = tokenizer.exec(json) ) { | |
71 | lc = RegExp.leftContext; | |
72 | rc = RegExp.rightContext; | |
73 | if (!in_multiline_comment && !in_singleline_comment) { | |
74 | tmp2 = lc.substring(from); | |
75 | if (!in_string) { | |
76 | tmp2 = tmp2.replace(/(\n|\r|\s)*/g,""); | |
77 | } | |
78 | new_str[ns++] = tmp2; | |
79 | } | |
80 | from = tokenizer.lastIndex; | |
81 | ||
82 | if (tmp[0] === "\"" && !in_multiline_comment && !in_singleline_comment) { | |
83 | tmp2 = lc.match(/(\\)*$/); | |
84 | if (!in_string || !tmp2 || (tmp2[0].length % 2) === 0) { // start of string with ", or unescaped " character found to end string | |
85 | in_string = !in_string; | |
86 | } | |
87 | from--; // include " character in next catch | |
88 | rc = json.substring(from); | |
89 | } | |
90 | else if (tmp[0] === "/*" && !in_string && !in_multiline_comment && !in_singleline_comment) { | |
91 | in_multiline_comment = true; | |
92 | } | |
93 | else if (tmp[0] === "*/" && !in_string && in_multiline_comment && !in_singleline_comment) { | |
94 | in_multiline_comment = false; | |
95 | } | |
96 | else if (tmp[0] === "//" && !in_string && !in_multiline_comment && !in_singleline_comment) { | |
97 | in_singleline_comment = true; | |
98 | } | |
99 | else if ((tmp[0] === "\n" || tmp[0] === "\r") && !in_string && !in_multiline_comment && in_singleline_comment) { | |
100 | in_singleline_comment = false; | |
101 | } | |
102 | else if (!in_multiline_comment && !in_singleline_comment && !(/\n|\r|\s/.test(tmp[0]))) { | |
103 | new_str[ns++] = tmp[0]; | |
104 | } | |
105 | } | |
106 | new_str[ns++] = rc; | |
107 | return new_str.join(""); | |
108 | }; | |
109 | ||
110 | if (typeof module !== 'undefined' && module.exports) { | |
111 | // node | |
112 | module.exports = minify; | |
113 | JSON.minify = minify; | |
114 | } else { | |
115 | // others, export global | |
116 | if (typeof global.JSON === "undefined" || !global.JSON) { | |
117 | global.JSON = {}; | |
118 | } | |
119 | global.JSON.minify = minify; | |
120 | } | |
121 | })(this); | |
122 | </code></pre> | |
123 | </article> | |
124 | </section> | |
125 | ||
126 | ||
127 | ||
128 | ||
129 | </div> | |
130 | ||
131 | <nav> | |
132 | <h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="JSON.html">JSON</a></li></ul> | |
133 | </nav> | |
134 | ||
135 | <br clear="both"> | |
136 | ||
137 | <footer> | |
138 | Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-dev</a> on Mon Sep 30 2013 14:37:29 GMT+0900 (JST) | |
139 | </footer> | |
140 | ||
141 | <script> prettyPrint(); </script> | |
142 | <script src="scripts/linenumber.js"> </script> | |
143 | </body> | |
144 | </html> |