Index: src/d8.js |
diff --git a/src/d8.js b/src/d8.js |
index 0c1f32dc8d281c4336a09a8675a62a48812e83ff..3f7832dd00b19e5ff0113aff9054faf43b6e4fc5 100644 |
--- a/src/d8.js |
+++ b/src/d8.js |
@@ -503,7 +503,7 @@ RequestPacket.prototype.toJSONProtocol = function() { |
json += '"seq":' + this.seq; |
json += ',"type":"' + this.type + '"'; |
if (this.command) { |
- json += ',"command":' + StringToJSON_(this.command); |
+ json += ',"command":' + JSON.stringify(this.command); |
} |
if (this.arguments) { |
json += ',"arguments":'; |
@@ -511,7 +511,7 @@ RequestPacket.prototype.toJSONProtocol = function() { |
if (this.arguments.toJSONProtocol) { |
json += this.arguments.toJSONProtocol(); |
} else { |
- json += SimpleObjectToJSON_(this.arguments); |
+ json += JSON.stringify(this.arguments); |
} |
} |
json += '}'; |
@@ -1965,214 +1965,6 @@ ProtocolReference.prototype.handle = function() { |
}; |
-function MakeJSONPair_(name, value) { |
- return '"' + name + '":' + value; |
-} |
- |
- |
-function ArrayToJSONObject_(content) { |
- return '{' + content.join(',') + '}'; |
-} |
- |
- |
-function ArrayToJSONArray_(content) { |
- return '[' + content.join(',') + ']'; |
-} |
- |
- |
-function BooleanToJSON_(value) { |
- return String(value); |
-} |
- |
- |
-function NumberToJSON_(value) { |
- return String(value); |
-} |
- |
- |
-// Mapping of some control characters to avoid the \uXXXX syntax for most |
-// commonly used control cahracters. |
-var ctrlCharMap_ = { |
- '\b': '\\b', |
- '\t': '\\t', |
- '\n': '\\n', |
- '\f': '\\f', |
- '\r': '\\r', |
- '"' : '\\"', |
- '\\': '\\\\' |
-}; |
- |
- |
-// Regular expression testing for ", \ and control characters (0x00 - 0x1F). |
-var ctrlCharTest_ = new RegExp('["\\\\\x00-\x1F]'); |
- |
- |
-// Regular expression matching ", \ and control characters (0x00 - 0x1F) |
-// globally. |
-var ctrlCharMatch_ = new RegExp('["\\\\\x00-\x1F]', 'g'); |
- |
- |
-/** |
- * Convert a String to its JSON representation (see http://www.json.org/). To |
- * avoid depending on the String object this method calls the functions in |
- * string.js directly and not through the value. |
- * @param {String} value The String value to format as JSON |
- * @return {string} JSON formatted String value |
- */ |
-function StringToJSON_(value) { |
- // Check for" , \ and control characters (0x00 - 0x1F). No need to call |
- // RegExpTest as ctrlchar is constructed using RegExp. |
- if (ctrlCharTest_.test(value)) { |
- // Replace ", \ and control characters (0x00 - 0x1F). |
- return '"' + |
- value.replace(ctrlCharMatch_, function (char) { |
- // Use charmap if possible. |
- var mapped = ctrlCharMap_[char]; |
- if (mapped) return mapped; |
- mapped = char.charCodeAt(); |
- // Convert control character to unicode escape sequence. |
- return '\\u00' + |
- '0' + // TODO %NumberToRadixString(Math.floor(mapped / 16), 16) + |
- '0'; // TODO %NumberToRadixString(mapped % 16, 16) |
- }) |
- + '"'; |
- } |
- |
- // Simple string with no special characters. |
- return '"' + value + '"'; |
-} |
- |
- |
-/** |
- * Convert a Date to ISO 8601 format. To avoid depending on the Date object |
- * this method calls the functions in date.js directly and not through the |
- * value. |
- * @param {Date} value The Date value to format as JSON |
- * @return {string} JSON formatted Date value |
- */ |
-function DateToISO8601_(value) { |
- var f = function(n) { |
- return n < 10 ? '0' + n : n; |
- }; |
- var g = function(n) { |
- return n < 10 ? '00' + n : n < 100 ? '0' + n : n; |
- }; |
- return builtins.GetUTCFullYearFrom(value) + '-' + |
- f(builtins.GetUTCMonthFrom(value) + 1) + '-' + |
- f(builtins.GetUTCDateFrom(value)) + 'T' + |
- f(builtins.GetUTCHoursFrom(value)) + ':' + |
- f(builtins.GetUTCMinutesFrom(value)) + ':' + |
- f(builtins.GetUTCSecondsFrom(value)) + '.' + |
- g(builtins.GetUTCMillisecondsFrom(value)) + 'Z'; |
-} |
- |
- |
-/** |
- * Convert a Date to ISO 8601 format. To avoid depending on the Date object |
- * this method calls the functions in date.js directly and not through the |
- * value. |
- * @param {Date} value The Date value to format as JSON |
- * @return {string} JSON formatted Date value |
- */ |
-function DateToJSON_(value) { |
- return '"' + DateToISO8601_(value) + '"'; |
-} |
- |
- |
-/** |
- * Convert an Object to its JSON representation (see http://www.json.org/). |
- * This implementation simply runs through all string property names and adds |
- * each property to the JSON representation for some predefined types. For type |
- * "object" the function calls itself recursively unless the object has the |
- * function property "toJSONProtocol" in which case that is used. This is not |
- * a general implementation but sufficient for the debugger. Note that circular |
- * structures will cause infinite recursion. |
- * @param {Object} object The object to format as JSON |
- * @return {string} JSON formatted object value |
- */ |
-function SimpleObjectToJSON_(object) { |
- var content = []; |
- for (var key in object) { |
- // Only consider string keys. |
- if (typeof key == 'string') { |
- var property_value = object[key]; |
- |
- // Format the value based on its type. |
- var property_value_json; |
- switch (typeof property_value) { |
- case 'object': |
- if (IS_NULL(property_value)) { |
- property_value_json = 'null'; |
- } else if (typeof property_value.toJSONProtocol == 'function') { |
- property_value_json = property_value.toJSONProtocol(true); |
- } else if (property_value.constructor.name == 'Array'){ |
- property_value_json = SimpleArrayToJSON_(property_value); |
- } else { |
- property_value_json = SimpleObjectToJSON_(property_value); |
- } |
- break; |
- |
- case 'boolean': |
- property_value_json = BooleanToJSON_(property_value); |
- break; |
- |
- case 'number': |
- property_value_json = NumberToJSON_(property_value); |
- break; |
- |
- case 'string': |
- property_value_json = StringToJSON_(property_value); |
- break; |
- |
- default: |
- property_value_json = null; |
- } |
- |
- // Add the property if relevant. |
- if (property_value_json) { |
- content.push(StringToJSON_(key) + ':' + property_value_json); |
- } |
- } |
- } |
- |
- // Make JSON object representation. |
- return '{' + content.join(',') + '}'; |
-} |
- |
- |
-/** |
- * Convert an array to its JSON representation. This is a VERY simple |
- * implementation just to support what is needed for the debugger. |
- * @param {Array} arrya The array to format as JSON |
- * @return {string} JSON formatted array value |
- */ |
-function SimpleArrayToJSON_(array) { |
- // Make JSON array representation. |
- var json = '['; |
- for (var i = 0; i < array.length; i++) { |
- if (i != 0) { |
- json += ','; |
- } |
- var elem = array[i]; |
- if (elem.toJSONProtocol) { |
- json += elem.toJSONProtocol(true); |
- } else if (typeof(elem) === 'object') { |
- json += SimpleObjectToJSON_(elem); |
- } else if (typeof(elem) === 'boolean') { |
- json += BooleanToJSON_(elem); |
- } else if (typeof(elem) === 'number') { |
- json += NumberToJSON_(elem); |
- } else if (typeof(elem) === 'string') { |
- json += StringToJSON_(elem); |
- } else { |
- json += elem; |
- } |
- } |
- json += ']'; |
- return json; |
-} |
- |
- |
// A more universal stringify that supports more types than JSON. |
// Used by the d8 shell to output results. |
var stringifyDepthLimit = 4; // To avoid crashing on cyclic objects |