77 extractNegativeFromAdjective ,
88 fixAdjective ,
99} from "./adjective.ts" ;
10- import { fixAdverb } from "./adverb.ts" ;
10+ import { extractNegativeFromAdverbs , fixAdverb } from "./adverb.ts" ;
1111import * as English from "./ast.ts" ;
1212import { fixDeterminer , getNumber } from "./determiner.ts" ;
1313import {
@@ -30,7 +30,7 @@ import {
3030} from "./preposition.ts" ;
3131import { Place } from "./pronoun.ts" ;
3232import { PartialCompoundVerb , PartialVerb } from "./verb.ts" ;
33- import { word } from "./word.ts" ;
33+ import { noEmphasis , word } from "./word.ts" ;
3434import { wordUnit } from "./word_unit.ts" ;
3535
3636export type PhraseTranslation =
@@ -146,7 +146,6 @@ function adjectivePhrase(
146146 }
147147 }
148148}
149- // TODO: extract "not"
150149function verbPhrase (
151150 options : Readonly < {
152151 emphasis : boolean ;
@@ -160,25 +159,34 @@ function verbPhrase(
160159 ...nullableAsArray ( modifier . inWayPhrase )
161160 . map ( ( object ) => nounAsPreposition ( object , "in" ) ) ,
162161 ] ;
162+ const adverb = [
163+ ...[ ...modifier . adverb ] . reverse ( ) ,
164+ ...verb . adverb ,
165+ ] ;
166+ const extracted = extractNegativeFromAdverbs ( adverb ) ;
167+ if ( extracted != null && extractNegativeFromAdverbs ( extracted ) != null ) {
168+ throw new FilteredError ( "double negative" ) ;
169+ }
170+ const negated = extracted != null ;
171+ const useAdverb = fixAdverb ( extracted ?? adverb ) ;
163172 if ( verb . first != null ) {
164173 return {
165174 ...verb ,
166- adverb : fixAdverb ( [
167- ...[ ...modifier . adverb ] . reverse ( ) ,
168- ...verb . adverb ,
169- ] ) ,
175+ first : { ...verb . first , negated } ,
176+ adverb : useAdverb ,
170177 phraseEmphasis : emphasis ,
171178 preposition,
172179 } ;
173180 } else if ( verb . modal != null ) {
181+ const postAdverb = negated
182+ ? [ { adverb : noEmphasis ( "not" ) , negative : true } ]
183+ : [ ] ;
174184 return {
175185 ...verb ,
176186 modal : {
177- ...verb . modal ,
178- preAdverb : fixAdverb ( [
179- ...[ ...modifier . adverb ] . reverse ( ) ,
180- ...verb . modal . preAdverb ,
181- ] ) ,
187+ preAdverb : useAdverb ,
188+ verb : verb . modal . verb ,
189+ postAdverb,
182190 } ,
183191 phraseEmphasis : emphasis ,
184192 preposition,
0 commit comments