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

			for(i = 0, key; key = keys[i]; i++){
				context[key] = this[key];
			}

			return context;
		},
		setThis: function(/*Object*/ _this){
			// summary: Sets the object on which to perform operations. 
			// _this: the this ref.
			this._this = _this;
		},
		getThis: function(){
			// summary: Gets the object on which to perform operations. 
			return this._this;
		},
		hasKey: function(/*String*/key){
			// summary: Indicates whether the specified key is defined on this context.
			// key: The key to look up.
			if(this._getter){
				var got = this._getter(key);
				if(typeof got != "undefined"){
					return true;
				}
			}

			if(typeof this[key] != "undefined"){
				return true;
			}

		return false;
	}
});
return dojox.dtl.Context; 
});