forked from spullara/mustache.java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNotIterableCode.java
More file actions
46 lines (38 loc) · 1.31 KB
/
NotIterableCode.java
File metadata and controls
46 lines (38 loc) · 1.31 KB
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
package com.github.mustachejava.codes;
import com.github.mustachejava.DefaultMustacheFactory;
import com.github.mustachejava.Mustache;
import com.github.mustachejava.TemplateContext;
import java.io.Writer;
import java.util.List;
import java.util.concurrent.Callable;
/**
* Runs the enclosed template once if the value is falsey.
*/
public class NotIterableCode extends IterableCode {
public NotIterableCode(TemplateContext templateContext, DefaultMustacheFactory df, Mustache mustache, String variable) {
super(templateContext, df, mustache, variable, "^");
}
@Override
public Writer execute(Writer writer, final List<Object> scopes) {
Object resolved = get(scopes);
writer = handle(writer, resolved, scopes);
appendText(writer);
return writer;
}
protected Writer handle(Writer writer, Object resolved, List<Object> scopes) {
if (resolved instanceof Callable) {
writer = handleCallable(writer, (Callable) resolved, scopes);
} else {
writer = execute(writer, resolved, scopes);
}
return writer;
}
@Override
protected Writer execute(Writer writer, Object resolve, List<Object> scopes) {
return oh.falsey(this, writer, resolve, scopes);
}
@Override
public Writer next(Writer writer, Object object, List<Object> scopes) {
return run(writer, scopes);
}
}