1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.mal_lang.langspec;
18
19 import static java.util.Objects.requireNonNull;
20
21 import jakarta.json.Json;
22 import jakarta.json.JsonObject;
23 import java.util.ArrayList;
24 import java.util.List;
25 import org.mal_lang.langspec.builders.StepsBuilder;
26 import org.mal_lang.langspec.step.StepExpression;
27
28
29
30
31
32
33 public final class Steps {
34 private final boolean overrides;
35 private final List<StepExpression> stepExpressions = new ArrayList<>();
36
37 private Steps(boolean overrides) {
38 this.overrides = overrides;
39 }
40
41
42
43
44
45
46
47 public boolean overrides() {
48 return this.overrides;
49 }
50
51
52
53
54
55
56
57 public List<StepExpression> getStepExpressions() {
58 return List.copyOf(this.stepExpressions);
59 }
60
61 void addStepExpression(StepExpression stepExpression) {
62 this.stepExpressions.add(requireNonNull(stepExpression));
63 }
64
65 JsonObject toJson() {
66 var jsonStepExpressions = Json.createArrayBuilder();
67 for (var stepExpression : this.stepExpressions) {
68 jsonStepExpressions.add(stepExpression.toJson());
69 }
70 return Json.createObjectBuilder()
71 .add("overrides", this.overrides)
72 .add("stepExpressions", jsonStepExpressions)
73 .build();
74 }
75
76 static Steps fromBuilder(StepsBuilder builder) {
77 requireNonNull(builder);
78 return new Steps(builder.overrides());
79 }
80 }