diff options
Diffstat (limited to 'includes/external/matrix/node_modules/another-json/another-json.js')
-rw-r--r-- | includes/external/matrix/node_modules/another-json/another-json.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/includes/external/matrix/node_modules/another-json/another-json.js b/includes/external/matrix/node_modules/another-json/another-json.js new file mode 100644 index 0000000..2157e73 --- /dev/null +++ b/includes/external/matrix/node_modules/another-json/another-json.js @@ -0,0 +1,93 @@ +/* Copyright 2015 Mark Haines + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +var escaped = /[\\\"\x00-\x1F]/g; +var escapes = {}; +for (var i = 0; i < 0x20; ++i) { + escapes[String.fromCharCode(i)] = ( + '\\U' + ('0000' + i.toString(16)).slice(-4).toUpperCase() + ); +} +escapes['\b'] = '\\b'; +escapes['\t'] = '\\t'; +escapes['\n'] = '\\n'; +escapes['\f'] = '\\f'; +escapes['\r'] = '\\r'; +escapes['\"'] = '\\\"'; +escapes['\\'] = '\\\\'; + +function escapeString(value) { + escaped.lastIndex = 0; + return value.replace(escaped, function(c) { return escapes[c]; }); +} + +function stringify(value) { + switch (typeof value) { + case 'string': + return '"' + escapeString(value) + '"'; + case 'number': + return isFinite(value) ? value : 'null'; + case 'boolean': + return value; + case 'object': + if (value === null) { + return 'null'; + } + if (Array.isArray(value)) { + return stringifyArray(value); + } + return stringifyObject(value); + default: + throw new Error('Cannot stringify: ' + typeof value); + } +} + +function stringifyArray(array) { + var sep = '['; + var result = ''; + for (var i = 0; i < array.length; ++i) { + result += sep; + sep = ','; + result += stringify(array[i]); + } + if (sep != ',') { + return '[]'; + } else { + return result + ']'; + } +} + +function stringifyObject(object) { + var sep = '{'; + var result = ''; + var keys = Object.keys(object); + keys.sort(); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + result += sep + '"' + escapeString(key) + '":'; + sep = ','; + result += stringify(object[key]); + } + if (sep != ',') { + return '{}'; + } else { + return result + '}'; + } +} + +/** */ +module.exports = {stringify: stringify}; |