aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--angularFiles.js1
-rw-r--r--src/Angular.js53
-rw-r--r--src/JSON.js49
-rw-r--r--test/AngularSpec.js50
-rw-r--r--test/JsonSpec.js58
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"}');
- }));
- });
-});