1
2
3
4
5
6 package dev.metaschema.core.metapath.cst.items;
7
8 import java.util.List;
9
10 import dev.metaschema.core.metapath.DynamicContext;
11 import dev.metaschema.core.metapath.IExpression;
12 import dev.metaschema.core.metapath.cst.AbstractExpression;
13 import dev.metaschema.core.metapath.cst.IExpressionVisitor;
14 import dev.metaschema.core.metapath.item.ISequence;
15 import dev.metaschema.core.metapath.item.function.IArrayItem;
16 import edu.umd.cs.findbugs.annotations.NonNull;
17
18
19
20
21
22
23 public class ArraySquareConstructor
24 extends AbstractExpression {
25 @NonNull
26 private final List<IExpression> children;
27
28
29
30
31
32
33
34
35
36
37
38
39
40 public ArraySquareConstructor(@NonNull String text, @NonNull List<IExpression> children) {
41 super(text);
42 this.children = children;
43 }
44
45 @Override
46 public List<? extends IExpression> getChildren() {
47 return children;
48 }
49
50 @Override
51 protected ISequence<IArrayItem<?>> evaluate(DynamicContext dynamicContext, ISequence<?> focus) {
52 return ISequence.of(getChildren().stream()
53 .map(expr -> expr.accept(dynamicContext, focus))
54 .map(ISequence::toCollectionValue)
55 .collect(IArrayItem.toArrayItem()));
56 }
57
58 @Override
59 public <RESULT, CONTEXT> RESULT accept(IExpressionVisitor<RESULT, CONTEXT> visitor, CONTEXT context) {
60 return visitor.visitArray(this, context);
61 }
62 }