Skip to content

Commit ca315ae

Browse files
committed
implement "anu la" translation
1 parent bd2f3de commit ca315ae

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

src/translator/sentence.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,12 @@ function sentence(
7878
case "simple": {
7979
let startingAdverb: IterableResult<null | English.Word>;
8080
let startingConjunction: null | English.Word;
81+
let contextClauses: ReadonlyArray<TokiPona.ContextClause>;
8182
if (sentence.startingParticle != null) {
8283
const { startingParticle } = sentence;
8384
const emphasis = startingParticle.emphasis != null;
8485
const reduplicationCount = getReduplicationCount(startingParticle);
86+
contextClauses = sentence.contextClauses;
8587
switch (sentence.startingParticle.word as "taso" | "kin" | "anu") {
8688
case "taso":
8789
startingAdverb = IterableResult.single(null);
@@ -108,9 +110,22 @@ function sentence(
108110
});
109111
break;
110112
}
113+
} else if (
114+
sentence.contextClauses.length > 0 &&
115+
sentence.contextClauses[0].type === "anu"
116+
) {
117+
const anu = sentence.contextClauses[0];
118+
startingAdverb = IterableResult.single(null);
119+
startingConjunction = word({
120+
reduplicationCount: getReduplicationCount(anu.anu),
121+
emphasis: anu.anu.emphasis != null,
122+
word: "or",
123+
});
124+
contextClauses = sentence.contextClauses.slice(1);
111125
} else {
112126
startingAdverb = IterableResult.single(null);
113127
startingConjunction = null;
128+
contextClauses = sentence.contextClauses;
114129
}
115130
const useAnuSeme = nullableAsArray(sentence.anuSeme)
116131
.map((seme): English.Clause => ({
@@ -122,7 +137,7 @@ function sentence(
122137
}),
123138
}));
124139
const interjectionClause: IterableResult<English.Clause> =
125-
sentence.contextClauses.length === 0 &&
140+
contextClauses.length === 0 &&
126141
sentence.startingParticle == null
127142
? IterableResult.fromArray(
128143
nullableAsArray(unwrapSingleWord(sentence.finalClause)),
@@ -143,7 +158,7 @@ function sentence(
143158
: IterableResult.empty();
144159
const clauses = IterableResult.combine(
145160
startingAdverb,
146-
IterableResult.combine(...sentence.contextClauses.map(contextClause))
161+
IterableResult.combine(...contextClauses.map(contextClause))
147162
.map((clause) => clause.flat()),
148163
IterableResult.concat(interjectionClause, clause(sentence.finalClause)),
149164
)

0 commit comments

Comments
 (0)