-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathinbuiltModifiers.js
74 lines (68 loc) · 1.98 KB
/
inbuiltModifiers.js
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
define(['./core'], function (jSmart) {
jSmart.prototype.registerPlugin(
'function',
'__quoted',
function (params, data) {
return params.join('')
}
)
// Register __array which gets called for all arrays.
jSmart.prototype.registerPlugin(
'function',
'__array',
function (params, data) {
var a = []
for (var name in params) {
if (Object.prototype.hasOwnProperty.call(params, name) && params[name] && typeof params[name] !== 'function') {
a[name] = params[name]
}
}
return a
}
)
// Register __func which gets called for all modifiers and function calls.
jSmart.prototype.registerPlugin(
'function',
'__func',
function (params, data) {
var paramData = []
var i
var fname
for (i = 0; i < params.length; ++i) {
paramData.push(params[i])
}
if (('__owner' in data && params.name in data.__owner)) {
fname = data.__owner
if (params.length) {
return fname[params.name].apply(fname, params)
} else {
// When function doesn't has arguments.
return fname[params.name].apply(fname)
}
} else if (Object.prototype.hasOwnProperty.call(jSmart.prototype.modifiers, params.name)) {
fname = jSmart.prototype.modifiers[params.name]
return fname.apply(fname, paramData)
} else {
fname = params.name
var func
if (typeof module === 'object' && module && typeof module.exports === 'object') {
func = global[fname]
} else {
if (typeof window === 'object' && window.document) {
func = window[fname]
} else if (global) {
func = global[fname]
}
}
if (data[fname]) {
return data[fname].apply(data[fname], paramData)
} else if (func) {
return func.apply(func, paramData)
}
// something went wrong.
return ''
}
}
)
return jSmart
})