gnome-shell/js/misc/params.js
Florian Müllner 105abab1e4 js: Remove modelines
We already include an .editorconfig that is supported by many
editors, including emacs, so no need to repeat an emacs-specific
modeline in every source file.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3431>
2024-07-30 18:20:55 +00:00

28 lines
929 B
JavaScript

/**
* parse:
*
* @param {*} params caller-provided parameter object, or %null
* @param {*} defaults provided defaults object
* @param {boolean} [allowExtras] whether or not to allow properties not in `default`
*
* @summary Examines `params` and fills in default values from `defaults` for
* any properties in `default` 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`.
*
* @returns a new object, containing the merged parameters from
* `params` and `defaults`
*/
export function parse(params = {}, defaults, allowExtras) {
if (!allowExtras) {
for (let prop in params) {
if (!(prop in defaults))
throw new Error(`Unrecognized parameter "${prop}"`);
}
}
return {...defaults, ...params};
}