019ef1903b1965bc3ce2ab6e660184dcb70364c7
[aai/esr-gui.git] /
1 "use strict";
2
3 // Set property function
4 var setProperty = function(obj, prop, flag, values) {
5   Object.defineProperty(obj, prop.name, {
6       enumerable:true,
7       set: function(value) {
8         if(typeof value != 'boolean') throw new Error(f("%s required a boolean", prop.name));
9         // Flip the bit to 1
10         if(value == true) values.flags |= flag;
11         // Flip the bit to 0 if it's set, otherwise ignore
12         if(value == false && (values.flags & flag) == flag) values.flags ^= flag;
13         prop.value = value;
14       }
15     , get: function() { return prop.value; }
16   });
17 }
18
19 // Set property function
20 var getProperty = function(obj, propName, fieldName, values, func) {
21   Object.defineProperty(obj, propName, {
22     enumerable:true,
23     get: function() {
24       // Not parsed yet, parse it
25       if(values[fieldName] == null && obj.isParsed && !obj.isParsed()) {
26         obj.parse();
27       }
28
29       // Do we have a post processing function
30       if(typeof func == 'function') return func(values[fieldName]);
31       // Return raw value
32       return values[fieldName];
33     }
34   });
35 }
36
37 // Set simple property
38 var getSingleProperty = function(obj, name, value) {
39   Object.defineProperty(obj, name, {
40     enumerable:true,
41     get: function() {
42       return value
43     }
44   });
45 }
46
47 // Shallow copy
48 var copy = function(fObj, tObj) {
49   tObj = tObj || {};
50   for(var name in fObj) tObj[name] = fObj[name];
51   return tObj;
52 }
53
54 var debugOptions = function(debugFields, options) {
55   var finaloptions = {};
56   debugFields.forEach(function(n) {
57     finaloptions[n] = options[n];
58   });
59
60   return finaloptions;
61 }
62
63 exports.setProperty = setProperty;
64 exports.getProperty = getProperty;
65 exports.getSingleProperty = getSingleProperty;
66 exports.copy = copy;
67 exports.debugOptions = debugOptions;