[gnome-shell] [Params] always return a new object from Params.parse



commit e9e2786fa34e6dd421140f114dec35892fad8a2e
Author: Dan Winship <danw gnome org>
Date:   Thu Apr 29 11:14:23 2010 -0400

    [Params] always return a new object from Params.parse
    
    Rather than returning a modified copy of the input params/defaults,
    always return a new object, copying the appropriate values into it.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=608667

 js/misc/params.js |   26 ++++++++++++++------------
 1 files changed, 14 insertions(+), 12 deletions(-)
---
diff --git a/js/misc/params.js b/js/misc/params.js
index 09e46b0..88596ce 100644
--- a/js/misc/params.js
+++ b/js/misc/params.js
@@ -2,7 +2,7 @@
 
 // parse:
 // @params: caller-provided parameter object, or %null
-// @default: function-provided defaults object
+// @defaults: function-provided defaults object
 // @allowExtras: whether or not to allow properties not in @default
 //
 // Examines @params and fills in default values from @defaults for
@@ -10,24 +10,26 @@
 // @allowExtras is not %true, it will throw an error if @params
 // contains any properties that aren't in @defaults.
 //
-// If @params is %null, this returns @defaults.
+// If @params is %null, this returns the values from @defaults.
 //
-// Return value: the updated params
+// Return value: a new object, containing the merged parameters from
+// @params and @defaults
 function parse(params, defaults, allowExtras) {
+    let ret = {}, prop;
+
     if (!params)
-        return defaults;
+        params = {};
 
-    if (!allowExtras) {
-        for (let prop in params) {
-            if (!(prop in defaults))
-                throw new Error('Unrecognized parameter "' + prop + '"');
-        }
+    for (prop in params) {
+        if (!(prop in defaults) && !allowExtras)
+            throw new Error('Unrecognized parameter "' + prop + '"');
+        ret[prop] = params[prop];
     }
 
-    for (let prop in defaults) {
+    for (prop in defaults) {
         if (!(prop in params))
-            params[prop] = defaults[prop];
+            ret[prop] = defaults[prop];
     }
 
-    return params;
+    return ret;
 }
\ No newline at end of file



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]