Skip to content

Commit 62d965b

Browse files
committed
implement translation of "preposition la"
1 parent 0dc4ed9 commit 62d965b

File tree

4 files changed

+21
-8
lines changed

4 files changed

+21
-8
lines changed

src/translator/ast.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ export type Clause =
8282
| Readonly<{ type: "subject phrase"; subject: NounPhrase }>
8383
| Readonly<{ type: "interjection"; interjection: Word }>
8484
| Readonly<{ type: "vocative"; call: string; addressee: NounPhrase }>
85+
| (Readonly<{ type: "preposition" }> & Preposition)
8586
| Readonly<{ type: "dependent"; conjunction: Word; clause: Clause }>;
8687
export type Preposition = Readonly<{
8788
adverb: ReadonlyArray<Word>;

src/translator/clause.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { FilteredError, TranslationTodoError } from "./error.ts";
66
import { perspective } from "./noun.ts";
77
import { multiplePhrases, multiplePhrasesAsNoun } from "./phrase.ts";
88
import { predicate } from "./predicate.ts";
9-
import { nounAsPreposition } from "./preposition.ts";
9+
import { nounAsPreposition, preposition } from "./preposition.ts";
1010
import { addModalToAll, noAdverbs, verb } from "./verb.ts";
1111
import { noEmphasis } from "./word.ts";
1212

@@ -204,19 +204,26 @@ export function clause(clause: TokiPona.Clause): ArrayResult<English.Clause> {
204204
}
205205
export function contextClause(
206206
contextClause: TokiPona.ContextClause,
207-
): ArrayResult<English.Clause> {
207+
): ArrayResult<ReadonlyArray<English.Clause>> {
208208
switch (contextClause.type) {
209209
case "prepositions":
210+
return ArrayResult.combine(...contextClause.prepositions.map(preposition))
211+
.map((prepositions) =>
212+
prepositions.map((preposition) => ({
213+
...preposition,
214+
type: "preposition",
215+
}))
216+
);
210217
case "nanpa":
211218
case "anu":
212219
return new ArrayResult(
213220
new TranslationTodoError(`${contextClause.type} context clause`),
214221
);
215222
default:
216-
return clause(contextClause).map((clause) => ({
223+
return clause(contextClause).map((clause) => [{
217224
type: "dependent",
218225
conjunction: noEmphasis("given"),
219226
clause,
220-
}));
227+
}]);
221228
}
222229
}

src/translator/composer.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ function clause(ast: English.Clause): string {
125125
return noun(ast.subject, 0);
126126
case "vocative":
127127
return `${ast.call} ${noun(ast.addressee, 0)}`;
128+
case "preposition":
129+
return preposition(ast);
128130
case "dependent":
129131
return `${word(ast.conjunction)} ${clause(ast.clause)}`;
130132
}

src/translator/sentence.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,10 @@ function sentence(
131131
switch (sentence.type) {
132132
case "default": {
133133
const laClauses = sentence.laClauses;
134-
const givenClauses = ArrayResult.combine(...laClauses.map(contextClause));
134+
const contextClauses = ArrayResult.combine(
135+
...laClauses.map(contextClause),
136+
)
137+
.map((clause) => clause.flat());
135138
if (sentence.startingParticle != null) {
136139
return new ArrayResult(
137140
new TranslationTodoError(
@@ -147,11 +150,11 @@ function sentence(
147150
? interjection(sentence.finalClause)
148151
: new ArrayResult<English.Clause>();
149152
const engClauses = ArrayResult.combine(
150-
givenClauses,
153+
contextClauses,
151154
ArrayResult.concat(interjectionClause, lastEngClause),
152155
)
153-
.map(([givenClauses, lastClause]) => [
154-
...givenClauses,
156+
.map(([contextClauses, lastClause]) => [
157+
...contextClauses,
155158
lastClause,
156159
...right,
157160
]);

0 commit comments

Comments
 (0)