MCPcopy
hub / github.com/Flotype/now / replaceVar

Function replaceVar

lib/handlers.js:23–113  ·  view source on GitHub ↗
(group, fqn, val)

Source from the content-addressed store, hash-verified

21 }
22
23 function replaceVar(group, fqn, val) {
24 var exclusive = false;
25 for (var j in group.excludes) {
26 if (group.excludes[j]) {
27 exclusive = true;
28 break;
29 }
30 }
31 var users = Object.keys(group.users);
32 var i = 0, ll = users.length;
33 var toSend = {},
34 flattenedVal = {},
35 fqns,
36 user;
37
38 // Setup: generate flattenedVal and toSend.
39 if (val && typeof val === 'object') {
40 flattenedVal = nowUtil.flatten(val, fqn);
41 fqns = Object.keys(flattenedVal);
42 // Iterate through all leaves.
43 for (i = 0, ll = fqns.length; i < ll; i++) {
44 toSend[fqns[i]] = nowUtil.getValOrFqn(flattenedVal[fqns[i]], fqns[i]);
45 }
46 } else {
47 // val is not an object.
48 fqns = [fqn];
49 toSend[fqn] = nowUtil.getValOrFqn(val, fqn);
50 flattenedVal[fqn] = val;
51 }
52
53 var ff = fqns.length, k;
54 if (exclusive) {
55 for (i = 0, ll = users.length; i < ll; i++) {
56 user = group.users[users[i]];
57 if (group.excludes[user.user.clientId]) {
58 continue;
59 }
60 // Clear the user's scopeTable entry before setting the new
61 // value.
62 user.deleteVar(fqn);
63 user.socket.emit('rv', toSend);
64
65 if (ff === 0) {
66 group.scopeTable.set(fqn, []);
67 }
68
69 for (k = 0; k < ff; k++) {
70 // Set values for individual users.
71 user.scopeTable.set(fqns[k], flattenedVal[fqns[k]]);
72 }
73 }
74 return;
75 } else {
76 // Not an exclusive group.
77 group.deleteVar(fqn);
78 for (k = 0; k < ff; k++) {
79 // Set values for the group.
80 group.scopeTable.set(fqns[k], flattenedVal[fqns[k]]);

Callers 1

handlers.jsFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected