[gnome-shell] [Params] always return a new object from Params.parse
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] [Params] always return a new object from Params.parse
- Date: Mon, 3 May 2010 16:52:46 +0000 (UTC)
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]