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 edu.umd.cs.findbugs.annotations.NonNull;
13
14
15
16
17
18
19
20
21
22 public class RelativeSlashPath
23 extends AbstractRelativePathExpression {
24
25
26
27
28
29
30
31
32
33
34
35
36 public RelativeSlashPath(
37 @NonNull String text,
38 @NonNull IExpression left,
39 @NonNull IExpression right) {
40 super(text, left, right);
41 }
42
43 @Override
44 public <RESULT, CONTEXT> RESULT accept(IExpressionVisitor<RESULT, CONTEXT> visitor, CONTEXT context) {
45 return visitor.visitRelativeSlashPath(this, context);
46 }
47
48 @Override
49 protected ISequence<?> evaluate(
50 DynamicContext dynamicContext,
51 ISequence<?> focus) {
52 ISequence<?> leftResult = getLeft().accept(dynamicContext, focus);
53
54
55 return leftResult.isEmpty()
56 ? ISequence.empty()
57 : getRight().accept(dynamicContext, leftResult);
58 }
59 }