-
Notifications
You must be signed in to change notification settings - Fork 0
/
tagFor.js
65 lines (49 loc) · 1.48 KB
/
tagFor.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
module.exports = function (parser, contents) {
console.log("In for parser");
var bits = contents.split(/\s+/) // ["for", "item", "in", "items"]
, contextTarget = bits[1]
, lookupContextVariable = parser.lookup(bits[3])
, forBody
, emptyBody
parser.parse({
'endfor': endfor
, 'empty': empty
})
console.log( lookupContextVariable);
return function (context) {
console.log("<><><>WHats my context " + context);
var target = lookupContextVariable(context)
, output = []
, loopContext
if (!target || !target.length) {
return emptyBody ? emptyBody(context) : ''
}
for (var i = 0, len = target.length; i < len; ++i) {
loopContext = Object.create(context)
loopContext[contextTarget] = target[i]
loopContext.forloop = {
parent: loopContext.forloop
, index: i
, isfirst: i === 0
, islast: i === len - 1
, length: len
}
output.push(forBody(loopContext))
console.log("push to output");
}
return output.join('')
}
function empty(tpl) {
console.log("empty()");
forBody = tpl
parser.parse({ 'endfor': endfor })
}
function endfor(tpl) {
console.log("endfor()");
if (forBody) {
emptyBody = tpl
} else {
forBody = tpl
}
}
}