-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFluentArguments.java
73 lines (61 loc) · 1.99 KB
/
FluentArguments.java
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
package net.quickwrite.fluent4j.util.args;
import net.quickwrite.fluent4j.ast.FluentElement;
import net.quickwrite.fluent4j.ast.placeable.base.FluentArgumentResult;
import net.quickwrite.fluent4j.util.bundle.DirectFluentBundle;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* A storage for the named arguments without the
* positional arguments.
*/
public class FluentArguments implements FluentArgs {
private final Map<String, FluentElement> namedArguments;
/**
* Creates a new argument container with the given
* arguments.
*/
public FluentArguments() {
this(new HashMap<>());
}
/**
* Creates a new argument container with the given
* arguments.
*
* @param namedArguments The named arguments
*/
public FluentArguments(final Map<String, FluentElement> namedArguments) {
this.namedArguments = namedArguments;
}
@Override
public void sanitize(final DirectFluentBundle bundle, final FluentArgs arguments) {
for (final String key : namedArguments.keySet()) {
final FluentElement argument = namedArguments.get(key);
if (argument instanceof FluentArgumentResult) {
namedArguments.put(key, ((FluentArgumentResult) argument).getArgumentResult(bundle, arguments));
}
}
}
@Override
public void setNamed(final String key, final FluentElement argument) {
this.namedArguments.put(key, argument);
}
@Override
public FluentElement getNamed(final String key) {
return this.namedArguments.get(key);
}
@Override
public Set<String> getNamedKeys() {
return this.namedArguments.keySet();
}
@Override
public boolean isEmpty() {
return this.namedArguments.isEmpty();
}
@Override
public String toString() {
return "ResourceNamedFluentArguments: {\n" +
"\t\t\tnamedArguments: \"" + this.namedArguments + "\"\n" +
"\t\t}";
}
}