1 | void (function(){var _ion_runtime_ArrayExpression_ = function(module,exports,require){'use strict';
|
2 | var ion = require('../'), DynamicExpression = require('./DynamicExpression');
|
3 | var ArrayExpression = ion.defineClass({
|
4 | name: 'ArrayExpression',
|
5 | constructor: function ArrayExpression() {
|
6 | ArrayExpression.super.apply(this, arguments);
|
7 | if (!(this.elements != null)) {
|
8 | throw new Error('elements is required');
|
9 | }
|
10 | if (!(this.context != null)) {
|
11 | throw new Error('context is required');
|
12 | }
|
13 | },
|
14 | properties: {
|
15 | observeElements: false,
|
16 | notifyIfActive: function () {
|
17 | if (this.isActive) {
|
18 | this.notify();
|
19 | }
|
20 | },
|
21 | setArgumentValue: function (key, value) {
|
22 | if (this.argumentValues[key] !== value) {
|
23 | if (this.observeElements) {
|
24 | ion.unobserve(this.argumentValues[key], this.itemObserver);
|
25 | }
|
26 | this.argumentValues[key] = value;
|
27 | if (this.observeElements) {
|
28 | ion.observe(value, this.itemObserver = this.itemObserver != null ? this.itemObserver : ion.bind(function () {
|
29 | this.notifyIfActive();
|
30 | }, this));
|
31 | }
|
32 | this.notifyIfActive();
|
33 | }
|
34 | },
|
35 | activate: function () {
|
36 | if (!(this.argumentValues != null)) {
|
37 | var _ref = [];
|
38 | {
|
39 | var _ref2 = this.elements;
|
40 | for (var _i = 0; _i < _ref2.length; _i++) {
|
41 | var item = _ref2[_i];
|
42 | _ref.push(this.context.createRuntime(item));
|
43 | }
|
44 | }
|
45 | this.expressions = _ref;
|
46 | this.argumentValues = [];
|
47 | this.expressionWatchers = [];
|
48 | for (var key = 0; key < this.expressions.length; key++) {
|
49 | this.expressionWatchers[key] = this.setArgumentValue.bind(this, key);
|
50 | }
|
51 | }
|
52 | {
|
53 | var _ref3 = this.expressions;
|
54 | for (var _i2 = 0; _i2 < _ref3.length; _i2++) {
|
55 | var key = _i2;
|
56 | var expression = _ref3[_i2];
|
57 | expression.watch(this.expressionWatchers[key]);
|
58 | }
|
59 | }
|
60 | ArrayExpression.super.prototype.activate.apply(this, arguments);
|
61 | this.setValue(this.argumentValues);
|
62 | },
|
63 | deactivate: function () {
|
64 | {
|
65 | var _ref4 = this.expressions;
|
66 | for (var _i3 = 0; _i3 < _ref4.length; _i3++) {
|
67 | var key = _i3;
|
68 | var expression = _ref4[_i3];
|
69 | expression.unwatch(this.expressionWatchers[key]);
|
70 | }
|
71 | }
|
72 | ArrayExpression.super.prototype.deactivate.apply(this, arguments);
|
73 | }
|
74 | },
|
75 | test: function () {
|
76 | var Context = require('./Context');
|
77 | var e = new ArrayExpression({
|
78 | context: new Context(),
|
79 | elements: [
|
80 | {
|
81 | type: 'Literal',
|
82 | value: 1
|
83 | },
|
84 | {
|
85 | type: 'Literal',
|
86 | value: 2
|
87 | }
|
88 | ]
|
89 | });
|
90 | var result = void 0;
|
91 | function watcher(value) {
|
92 | result = value;
|
93 | }
|
94 | e.watch(watcher);
|
95 | if (!(JSON.stringify(result) === '[1,2]'))
|
96 | throw new Error('Assertion Failed: (JSON.stringify(result) is "[1,2]")');
|
97 | }
|
98 | }, DynamicExpression);
|
99 | module.exports = exports = ArrayExpression;
|
100 | }
|
101 | if (typeof require === 'function') {
|
102 | if (require.register)
|
103 | require.register('ion/runtime/ArrayExpression',_ion_runtime_ArrayExpression_);
|
104 | else
|
105 | _ion_runtime_ArrayExpression_.call(this, module, exports, require);
|
106 | }
|
107 | else {
|
108 | _ion_runtime_ArrayExpression_.call(this);
|
109 | }
|
110 | }).call(this)
|
111 |
|
\ | No newline at end of file |