1
2
3
4
5
6 package dev.metaschema.core.metapath.cst.path;
7
8 import dev.metaschema.core.metapath.DynamicContext;
9 import dev.metaschema.core.metapath.IExpression;
10 import dev.metaschema.core.metapath.cst.IExpressionVisitor;
11 import dev.metaschema.core.metapath.item.ISequence;
12 import dev.metaschema.core.metapath.item.node.INodeItem;
13 import edu.umd.cs.findbugs.annotations.NonNull;
14
15
16
17
18
19
20
21
22
23 public class RelativeDoubleSlashPath
24 extends AbstractRelativePathExpression {
25
26
27
28
29
30
31
32
33
34
35
36
37 public RelativeDoubleSlashPath(
38 @NonNull String text,
39 @NonNull IExpression left,
40 @NonNull IExpression right) {
41 super(text, left, right);
42 }
43
44 @Override
45 public <RESULT, CONTEXT> RESULT accept(IExpressionVisitor<RESULT, CONTEXT> visitor, CONTEXT context) {
46 return visitor.visitRelativeDoubleSlashPath(this, context);
47 }
48
49 @Override
50 protected ISequence<? extends INodeItem> evaluate(
51 DynamicContext dynamicContext,
52 ISequence<?> focus) {
53 ISequence<?> leftResult = getLeft().accept(dynamicContext, focus);
54
55
56 return ISequence.of(search(getRight(), dynamicContext, leftResult));
57 }
58 }