diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:54:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:54:43 +0000 |
commit | e4283f6d48b98e764b988b43bbc86b9d52e6ec94 (patch) | |
tree | c8f7f7a6c2f5faa2942d27cefc6fd46cca492656 /js/misc/params.js | |
parent | Initial commit. (diff) | |
download | gnome-shell-e4283f6d48b98e764b988b43bbc86b9d52e6ec94.tar.xz gnome-shell-e4283f6d48b98e764b988b43bbc86b9d52e6ec94.zip |
Adding upstream version 43.9.upstream/43.9upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/misc/params.js')
-rw-r--r-- | js/misc/params.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/js/misc/params.js b/js/misc/params.js new file mode 100644 index 0000000..817d66c --- /dev/null +++ b/js/misc/params.js @@ -0,0 +1,28 @@ +// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- +/* exported parse */ + +// parse: +// @params: caller-provided parameter object, or %null +// @defaults-provided defaults object +// @allowExtras: whether or not to allow properties not in @default +// +// Examines @params and fills in default values from @defaults for +// any properties in @defaults that don't appear in @params. If +// @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 the values from @defaults. +// +// Return value: a new object, containing the merged parameters from +// @params and @defaults +function parse(params = {}, defaults, allowExtras) { + if (!allowExtras) { + for (let prop in params) { + if (!(prop in defaults)) + throw new Error(`Unrecognized parameter "${prop}"`); + } + } + + let defaultsCopy = Object.assign({}, defaults); + return Object.assign(defaultsCopy, params); +} |