Skip to content

Commit fba2e3c

Browse files
committed
move definition
1 parent 15b6af2 commit fba2e3c

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

src/translator/clause.ts

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import * as English from "./ast.ts";
55
import { FilteredError, TranslationTodoError } from "./error.ts";
66
import { nanpa } from "./nanpa.ts";
77
import { perspective, quantity } from "./noun.ts";
8-
import { multiplePhrases, multiplePhrasesAsNoun } from "./phrase.ts";
8+
import { multiplePhrases } from "./phrase.ts";
99
import { predicate } from "./predicate.ts";
1010
import { nounAsPreposition, preposition } from "./preposition.ts";
11+
import { Place } from "./pronoun.ts";
1112
import { addModalToAll, noAdverbs, verb } from "./verb.ts";
1213
import { noEmphasis } from "./word.ts";
1314
import { fromSimpleDefinition } from "./word_unit.ts";
@@ -69,9 +70,24 @@ function phraseClause(phrases: TokiPona.MultiplePhrases) {
6970
}
7071
});
7172
}
73+
export function subject(
74+
options: Readonly<{
75+
phrases: TokiPona.MultiplePhrases;
76+
place: Place;
77+
includeGerund: boolean;
78+
andParticle: string;
79+
}>,
80+
): IterableResult<English.NounPhrase> {
81+
return multiplePhrases({ ...options, includeVerb: false })
82+
.map((phrase) =>
83+
phrase.type === "noun"
84+
? phrase.noun
85+
: throwError(new FilteredError(`${phrase.type} as subject`))
86+
);
87+
}
7288
function liClause(clause: TokiPona.Clause & { type: "li clause" }) {
7389
return IterableResult.combine(
74-
multiplePhrasesAsNoun({
90+
subject({
7591
phrases: clause.subjects,
7692
place: "subject",
7793
includeGerund: true,
@@ -129,8 +145,8 @@ function iWish(
129145
};
130146
}
131147
function oClause(clause: TokiPona.Clause & { type: "o clause" }) {
132-
const subject = clause.subjects != null
133-
? multiplePhrasesAsNoun({
148+
const useSubject = clause.subjects != null
149+
? subject({
134150
phrases: clause.subjects,
135151
place: "subject",
136152
includeGerund: true,
@@ -148,7 +164,7 @@ function oClause(clause: TokiPona.Clause & { type: "o clause" }) {
148164
prepositions: [],
149165
emphasis: false,
150166
});
151-
return IterableResult.combine(subject, predicate(clause.predicates, "o"))
167+
return IterableResult.combine(useSubject, predicate(clause.predicates, "o"))
152168
.flatMap(([subject, predicate]) => {
153169
const subjectPerspective = perspective(subject);
154170
const subjectQuantity = quantity(subject);

src/translator/phrase.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -424,14 +424,3 @@ export function multiplePhrases(
424424
}
425425
}
426426
}
427-
export function multiplePhrasesAsNoun(
428-
options: Readonly<{
429-
phrases: TokiPona.MultiplePhrases;
430-
place: Place;
431-
includeGerund: boolean;
432-
andParticle: string;
433-
}>,
434-
): IterableResult<English.NounPhrase> {
435-
return multiplePhrases({ ...options, includeVerb: false })
436-
.filterMap((phrase) => phrase.type === "noun" ? phrase.noun : null);
437-
}

0 commit comments

Comments
 (0)