Skip to content

Commit 867031b

Browse files
committed
filter out adverbial modifier for phrase to verb conversion
1 parent 59001b3 commit 867031b

1 file changed

Lines changed: 29 additions & 20 deletions

File tree

src/translator2/phrase.ts

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import { ExhaustedError, FilteredError } from "./error.ts";
99
import { CONJUNCTION } from "./misc.ts";
1010
import {
1111
adjectivalIsNone,
12-
AdjectivalModifier,
12+
AdjectivalModifier, adverbialIsNone,
1313
AdverbialModifier,
1414
multipleModifiers,
15-
} from "./modifier.ts";
15+
} from './modifier.ts'
1616
import { nounAsPreposition, preposition } from "./preposition.ts";
1717
import { wordUnit } from "./word_unit.ts";
1818

@@ -273,7 +273,7 @@ function preverb(
273273
return { ...verb, subjectComplement, emphasis };
274274
} else if (verb.predicateType === "verb") {
275275
const predicateAsVerb = phraseAsVerb(predicate);
276-
if (predicateAsVerb.type === "simple") {
276+
if (predicateAsVerb != null && predicateAsVerb.type === "simple") {
277277
const first = predicateAsVerb.verb[0];
278278
// TODO: filter out modal verb when found in the middle
279279
const verbForPreverb: English.AdverbVerb = {
@@ -327,7 +327,7 @@ export function phrase(
327327
}
328328
export function phraseAsVerb(
329329
phrase: PhraseTranslation,
330-
): English.VerbPhrase {
330+
): null | English.VerbPhrase {
331331
// TODO: on grammar fixer, extract noun and adjective negative modifier and put it on the verb
332332
switch (phrase.type) {
333333
case "noun":
@@ -336,11 +336,15 @@ export function phraseAsVerb(
336336
let inWayPhrase: null | English.AdjectivePhrase;
337337
switch (phrase.type) {
338338
case "noun": {
339-
inWayPhrase = null;
340-
subjectComplement = {
341-
type: "noun",
342-
noun: phrase.noun,
343-
};
339+
if (adverbialIsNone(phrase.adverbialModifier)) {
340+
inWayPhrase = null;
341+
subjectComplement = {
342+
type: "noun",
343+
noun: phrase.noun,
344+
};
345+
} else {
346+
return null;
347+
}
344348
break;
345349
}
346350
case "adjective": {
@@ -450,17 +454,22 @@ export function multiplePhrases(
450454
};
451455
}
452456
} else {
453-
return {
454-
type: "verb",
455-
verb: {
456-
type: "compound",
457-
conjunction,
458-
verbs: phrase.map(phraseAsVerb),
459-
object: null,
460-
objectComplement: null,
461-
prepositions: [],
462-
},
463-
};
457+
const verbs = phrase.map(phraseAsVerb);
458+
if (verbs.every((verb) => verb != null)) {
459+
return {
460+
type: "verb",
461+
verb: {
462+
type: "compound",
463+
conjunction,
464+
verbs,
465+
object: null,
466+
objectComplement: null,
467+
prepositions: [],
468+
},
469+
};
470+
} else {
471+
return null;
472+
}
464473
}
465474
})
466475
.addErrorWhenNone(() =>

0 commit comments

Comments
 (0)