diff options
| -rw-r--r-- | angularFiles.js | 1 | ||||
| -rw-r--r-- | src/Angular.js | 53 | ||||
| -rw-r--r-- | src/JSON.js | 49 | ||||
| -rw-r--r-- | test/AngularSpec.js | 50 | ||||
| -rw-r--r-- | test/JsonSpec.js | 58 | 
5 files changed, 103 insertions, 108 deletions
| diff --git a/angularFiles.js b/angularFiles.js index 18cc8d61..8d2ffbbb 100644 --- a/angularFiles.js +++ b/angularFiles.js @@ -3,7 +3,6 @@ angularFiles = {      'src/Angular.js',      'src/loader.js',      'src/AngularPublic.js', -    'src/JSON.js',      'src/jqLite.js',      'src/apis.js', diff --git a/src/Angular.js b/src/Angular.js index b174a54c..0f66d99c 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -727,6 +727,59 @@ function bind(self, fn) {    }  } + +function toJsonReplacer(key, value) { +  var val = value; + +  if (/^\$+/.test(key)) { +    val = undefined; +  } else if (isWindow(value)) { +    val = '$WINDOW'; +  } else if (value &&  document === value) { +    val = '$DOCUMENT'; +  } else if (isScope(value)) { +    val = '$SCOPE'; +  } + +  return val; +}; + + +/** + * @ngdoc function + * @name angular.toJson + * @function + * + * @description + * Serializes input into a JSON-formatted string. + * + * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON. + * @param {boolean=} pretty If set to true, the JSON output will contain newlines and whitespace. + * @returns {string} Jsonified string representing `obj`. + */ +function toJson(obj, pretty) { +  return JSON.stringify(obj, toJsonReplacer, pretty ? '  ' : null); +} + + +/** + * @ngdoc function + * @name angular.fromJson + * @function + * + * @description + * Deserializes a JSON string. + * + * @param {string} json JSON string to deserialize. + * @returns {Object|Array|Date|string|number} Deserialized thingy. + */ +function fromJson(json) { +  return isString(json) +      ? JSON.parse(json) +      : json; +} + +  function toBoolean(value) {    if (value && value.length !== 0) {      var v = lowercase("" + value); diff --git a/src/JSON.js b/src/JSON.js deleted file mode 100644 index e6d48c86..00000000 --- a/src/JSON.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -var jsonReplacer = function(key, value) { -  var val = value; -  if (/^\$+/.test(key)) { -    val = undefined; -  } else if (isWindow(value)) { -    val = '$WINDOW'; -  } else if (value &&  document === value) { -    val = '$DOCUMENT'; -  } else if (isScope(value)) { -    val = '$SCOPE'; -  } - -  return val; -}; - -/** - * @ngdoc function - * @name angular.toJson - * @function - * - * @description - * Serializes input into a JSON-formatted string. - * - * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON. - * @param {boolean=} pretty If set to true, the JSON output will contain newlines and whitespace. - * @returns {string} Jsonified string representing `obj`. - */ -function toJson(obj, pretty) { -  return JSON.stringify(obj, jsonReplacer, pretty ? '  ' : null); -} - -/** - * @ngdoc function - * @name angular.fromJson - * @function - * - * @description - * Deserializes a JSON string. - * - * @param {string} json JSON string to deserialize. - * @returns {Object|Array|Date|string|number} Deserialized thingy. - */ -function fromJson(json) { -  return isString(json) -      ? JSON.parse(json) -      : json; -} diff --git a/test/AngularSpec.js b/test/AngularSpec.js index cb0c5c6b..da56449a 100644 --- a/test/AngularSpec.js +++ b/test/AngularSpec.js @@ -542,4 +542,54 @@ describe('angular', function() {        expect(snake_case('alanBobCharles')).toEqual('alan_bob_charles');      });    }); + + +  describe('fromJson', function() { + +    it('should delegate to JSON.parse', function() { +      var spy = spyOn(JSON, 'parse').andCallThrough(); + +      expect(fromJson('{}')).toEqual({}); +      expect(spy).toHaveBeenCalled(); +    }); +  }); + + +  describe('toJson', function() { + +    it('should delegate to JSON.stringify', function() { +      var spy = spyOn(JSON, 'stringify').andCallThrough(); + +      expect(toJson({})).toEqual('{}'); +      expect(spy).toHaveBeenCalled(); +    }); + + +    it('should format objects pretty', function() { +      expect(toJson({a: 1, b: 2}, true)). +          toBeOneOf('{\n  "a": 1,\n  "b": 2\n}', '{\n  "a":1,\n  "b":2\n}'); +      expect(toJson({a: {b: 2}}, true)). +          toBeOneOf('{\n  "a": {\n    "b": 2\n  }\n}', '{\n  "a":{\n    "b":2\n  }\n}'); +    }); + + +    it('should not serialize properties starting with $', function() { +      expect(toJson({$few: 'v', $$some:'value'}, false)).toEqual('{}'); +    }); + + +    it('should not serialize $window object', function() { +      expect(toJson(window)).toEqual('"$WINDOW"'); +    }); + + +    it('should not serialize $document object', function() { +      expect(toJson(document)).toEqual('"$DOCUMENT"'); +    }); + + +    it('should not serialize scope instances', inject(function($rootScope) { +      expect(toJson({key: $rootScope})).toEqual('{"key":"$SCOPE"}'); +    })); +  });  }); diff --git a/test/JsonSpec.js b/test/JsonSpec.js deleted file mode 100644 index 5ca3e42e..00000000 --- a/test/JsonSpec.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -describe('json', function() { - -  describe('fromJson', function() { - -    it('should delegate to JSON.parse', function() { -      var spy = spyOn(JSON, 'parse').andCallThrough(); - -      expect(fromJson('{}')).toEqual({}); -      expect(spy).toHaveBeenCalled(); -    }); -  }); - - -  describe('toJson', function() { - -    it('should delegate to JSON.stringify', function() { -      var spy = spyOn(JSON, 'stringify').andCallThrough(); - -      expect(toJson({})).toEqual('{}'); -      expect(spy).toHaveBeenCalled(); -    }); - - -    it('should format objects pretty', function() { -      expect(toJson({a: 1, b: 2}, true)). -          toBeOneOf('{\n  "a": 1,\n  "b": 2\n}', '{\n  "a":1,\n  "b":2\n}'); -      expect(toJson({a: {b: 2}}, true)). -          toBeOneOf('{\n  "a": {\n    "b": 2\n  }\n}', '{\n  "a":{\n    "b":2\n  }\n}'); -    }); - - -    it('should not serialize properties starting with $', function() { -      expect(toJson({$few: 'v', $$some:'value'}, false)).toEqual('{}'); -    }); - - -    it('should not serialize undefined values', function() { -      expect(angular.toJson({A:undefined})).toEqual('{}'); -    }); - - -    it('should not serialize $window object', function() { -      expect(toJson(window)).toEqual('"$WINDOW"'); -    }); - - -    it('should not serialize $document object', function() { -      expect(toJson(document)).toEqual('"$DOCUMENT"'); -    }); - - -    it('should not serialize scope instances', inject(function($rootScope) { -      expect(toJson({key: $rootScope})).toEqual('{"key":"$SCOPE"}'); -    })); -  }); -}); | 
