Bug 1842974 - Remove dom.dialog_element.enabled pref r=emilio
[gecko.git] / devtools / shared / protocol / utils.js
blob3433c2f44655ce067bbca4f6529e24ad19b3b851
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 "use strict";
7 /**
8  * Find Placeholders in the template and save them along with their
9  * paths.
10  */
11 function findPlaceholders(template, constructor, path = [], placeholders = []) {
12   if (!template || typeof template != "object") {
13     return placeholders;
14   }
16   if (template instanceof constructor) {
17     placeholders.push({ placeholder: template, path: [...path] });
18     return placeholders;
19   }
21   for (const name in template) {
22     path.push(name);
23     findPlaceholders(template[name], constructor, path, placeholders);
24     path.pop();
25   }
27   return placeholders;
30 exports.findPlaceholders = findPlaceholders;
32 /**
33  * Get the value at a given path, or undefined if not found.
34  */
35 function getPath(obj, path) {
36   for (const name of path) {
37     if (!(name in obj)) {
38       return undefined;
39     }
40     obj = obj[name];
41   }
42   return obj;
44 exports.getPath = getPath;