1 | define([ |
---|
2 | "dojo/_base/lang", |
---|
3 | "./_base" |
---|
4 | ], function(lang,dd){ |
---|
5 | return dd.Context = lang.extend(function(/*Object*/dict){ |
---|
6 | // summary: |
---|
7 | // Represents a runtime context used by DTL templates. |
---|
8 | this._this = {}; |
---|
9 | dd._Context.call(this, dict); // TODO: huh? |
---|
10 | }, dd._Context.prototype, // TODO: huh? |
---|
11 | { |
---|
12 | getKeys: function(){ |
---|
13 | // summary: |
---|
14 | // Returns the set of keys exported by this context. |
---|
15 | var keys = []; |
---|
16 | for(var key in this){ |
---|
17 | if(this.hasOwnProperty(key) && key != "_this"){ |
---|
18 | keys.push(key); |
---|
19 | } |
---|
20 | } |
---|
21 | return keys; |
---|
22 | }, |
---|
23 | extend: function(/*dojox/dtl/Context|Object*/ obj){ |
---|
24 | // summary: |
---|
25 | // Returns a clone of this context object, with the items from the passed objecct mixed in. |
---|
26 | // obj: |
---|
27 | // The object to extend. |
---|
28 | return lang.delegate(this, obj); |
---|
29 | }, |
---|
30 | filter: function(/*dojox/dtl/Context|Object|String...*/ filter){ |
---|
31 | // summary: |
---|
32 | // Returns a clone of this context, only containing the items defined in the filter. |
---|
33 | var context = new dd.Context(); |
---|
34 | var keys = []; |
---|
35 | var i, arg; |
---|
36 | if(filter instanceof dd.Context){ |
---|
37 | keys = filter.getKeys(); |
---|
38 | }else if(typeof filter == "object"){ |
---|
39 | for(var key in filter){ |
---|
40 | keys.push(key); |
---|
41 | } |
---|
42 | }else{ |
---|
43 | for(i = 0; arg = arguments[i]; i++){ |
---|
44 | if(typeof arg == "string"){ |
---|
45 | keys.push(arg); |
---|
46 | } |
---|
47 | } |
---|
48 | } |
---|
49 | |
---|
50 | for(i = 0, key; key = keys[i]; i++){ |
---|
51 | context[key] = this[key]; |
---|
52 | } |
---|
53 | |
---|
54 | return context; |
---|
55 | }, |
---|
56 | setThis: function(/*Object*/ scope){ |
---|
57 | // summary: |
---|
58 | // Sets the object on which to perform operations. |
---|
59 | // scope: |
---|
60 | // the this ref. |
---|
61 | this._this = scope; |
---|
62 | }, |
---|
63 | getThis: function(){ |
---|
64 | // summary: |
---|
65 | // Gets the object on which to perform operations. |
---|
66 | return this._this; |
---|
67 | }, |
---|
68 | hasKey: function(/*String*/key){ |
---|
69 | // summary: |
---|
70 | // Indicates whether the specified key is defined on this context. |
---|
71 | // key: |
---|
72 | // The key to look up. |
---|
73 | if(this._getter){ |
---|
74 | var got = this._getter(key); |
---|
75 | if(typeof got != "undefined"){ |
---|
76 | return true; |
---|
77 | } |
---|
78 | } |
---|
79 | |
---|
80 | if(typeof this[key] != "undefined"){ |
---|
81 | return true; |
---|
82 | } |
---|
83 | |
---|
84 | return false; |
---|
85 | } |
---|
86 | }); |
---|
87 | }); |
---|